본문 바로가기

C++33

cout / cin / endl 에 대하여... #include namespace mystd { char* endl = " \n"; class ostream { public: ostream& operator 2009. 2. 10.
단항 연산자의 오버로딩 이항 연산자 오버로딩과 단항 연산자 오버로딩의 가장 큰 차이점은 전달 인자의 개수에 있다. 이항 연산자 오버로딩을한 전역함수와 멤버 함수의 매개 변수 개수는 각각 2개, 1개 였다. 단형 연산자를 오버로딩할 때, 매개 변수의 개수는 이보다 1개 적다.(피연산자가의 개수가 이항연산자 보다 1개 적다) Point& Point::operator++() { x++; y++; return *this; } 위 예제를 보면 "*this" 를 리턴하고 있다. "*this"가 의미하는 바는 무엇인가? 답: this는 객체 자신을 가리키는 포인터다. 여기에 "*연산을 하게되면 포인터가 가리키는 대상을 참조하겠다는 뜻이 된다. 즉 자기 자신을 리턴 하겠다는 의미를 지닌다. x++과 y++ 연산으로 값 증가로 충분한거 아닌가.. 2009. 2. 9.
연산자 오버로딩 연산자를 오버로딩하는 방법은 크게 두가지의 형태로 나뉜다. 첫번째는 멤버 함수에 의한 오버로딩이고, 두번째는 전역 함수에 의한 오버로딩이다. p+3 == p.operator+(3) p+3 으로 하면 p.operator(3)으로 해석이된다...약속이다 ..ㅠ. 멤버 함수에 의한 연산자 오버로딩에 해당된다. ① 멤버 함수로 오버로딩 Point Point::operator+(const Point& p)const ② 전역 함수로 오버로딩 Pointoperator+(const Point& p1,const Point& p2) =>약속......;;;;;;; p1 + p2 -> 멤버함수로 오버로딩된경우 [ p1.operator+ (p2) ] p1 + p2 -> 전역 함수로 오버로딩 된경우 [ operator+ (p1.. 2009. 2. 6.
클래스 멤버함수는 // virtual의 원리 // 다중상속 * 다시 봐야될듯.ㅠ -함수 포인터 - ○함수 포인터는 함수의 시작 지점의 주소를 포함하는 변수이다. ○프로그램을 컴파일할 때 프로그램에 있는 각 함수의 시작 지점을 생성하고 프로그램이 링크되면 함수가 참조될 때마다 호출되는 물리적 주소에 해당한다. ○시작 지점은 주소이기 때문에 포인터 변수가 포인터를 이용하여 함수를 호출하는 것이 가능하다. ○함수를 가리키는 변수를 만들기 위해서는 함수의 반환 형과 같은 형을 가지는 포인터를 선언하며, 이포인터는 어떠한 매개변수 보다도 앞에 선언해야 한다.. int (*p)(int a, int b) ; - *p 주위에 있는 괄호는 C의 우선 순위 규칙 때문에 반드시 필요하다. - 객체생성시 : 객체가 생성되면, 멤버 변수는 객체내에 존재한다. 그러나 멤버 함수는 메모리으 한 공간에 존재 하.. 2009. 2. 5.