전문가를 위한 c++ 18장 함수오버로딩
오버로딩 개활 + , < , * , << 같은 연산기호로 int같은 형을 산술또는 논리연산등을 하는데 이용. 또는 . ->같은 포인터 역참조도 가능하다,[],() 같은 함수호출과 타입캐스팅또한 가능하다. 재정의 가능. 오버로딩을 하는 이유 - 커스텀 클래스를 내장타입처럼 사용하려고 쓰인다. - 프로그램 동작방식을 더 강력하게 한다. 제약사항 - 이미 지정된 목록의 특수기호만 사용 - . , :: , sizeof , ? : ,같은건 오버로딩 불가. - 연산자 인자갯수는 바꿀 수 없다. ++ 은 하나, + 는 2, 유일한 삼항연산자 ?:는 3개 - 우선순위와 결합규칙은 바꿀 수 없다. - 내장타입 연산은 바꿀 수 없다, - 한개의 기호에 여러기능을 넣을 수도 있다. 예) x = y + x ; x = + y의 +는 2개의 의미 오버로딩시 friend을 많이 사용하며, operator를 사용하여 재정의 가능하다. - 함수로 오버로딩 해야하는 연산자 : operator = 대입에 의미가 있어서 메서드여야만함. - 전역함수로 오버로딩해야하는 연산자 : +,-같이 좌우가 서로 교환되는것. - 메서드 전역함수 어느것으로도 오버로딩가능연산자 : 왠만하면 함수로한다, 그래야 virtual 사용가능 friend로 virtual 사용불가 -메소드로사용시 const를 써주면 객체를 대상으로도 작동한다. 리턴타입선택 비교연산자가 포인터를 리턴하던가 산술이 bollion값을 리턴하는등의 문제가 있을수있음. 내장타입과 같은타입을 리턴시키자 좌향대입이 변경된다면 non-const로 정의 +로 숫자말고도 문자열 붙히기등으로 은유해서 사용가능. 오버로딩 하면 안되는것들(사용 가능해도 혼란을 가져옴) &, 주소를 못불름 ||, && 생략원칙또한 깨진다. 콤마도 연산자인데. 순서를 보장못한다. 우측값 참조 원형 T& ope...