2013년 2월 27일 수요일
복사생성자, 대입연산자 호출 시점
복사 생성자가 호출되는 대표적인 상황
int main(void)
{
Point pos1(5,7);
Point pos2 = pos1;//pos2의 초기화에 기존에 생성된 객체 pos1 사용
.....
}
대입 연산자가 호출되는 대표적인 상황
int main(void)
{
Point pos1(5,7);
Point pos2(9,10);
pos2 = pos1;//pos2.operator=(pos1);
.....
}
pos2,pos1 모두 이미 생성 및 초기화가 진행된 객체라는 사실. 즉, 기존에 생성된 두 객체간의 대입연산 시에는 대입 연산자가 호출된다.
2013년 2월 25일 월요일
오버로딩이 불가능한 연산자의 종류
오버로딩이 불가능한 연산자의 종류
. 멤버 접근 연산자
_____________________________________
.* 멤버 포인터 연산자
_____________________________________
:: 범위 지졍 연산자
_____________________________________
?: 조건 연산자(3항 연산자)
_____________________________________
sizeof 바이트 단위 크기 계산
_____________________________________
typeid RTTI 관련 연산자
_____________________________________
static_cast 형변환 연산자
_____________________________________
dynamic_cast 형변환 연산자
_____________________________________
const_cast 형변환 연산자
_____________________________________
reinterpret_cast 형변환 연산자
_____________________________________
제한하는 이유는 C++의 문법규칙을 보존하기 위해서다.
2013년 2월 20일 수요일
const 객체와 const 객체들의 특성
- #include
- #include
- using namespace std;
- class SoSimple
- {
- private:
- int num;
- public:
- SoSimple(int n):num(n)
- {
- }
- SoSimple& AddNum(int n)
- {
- num += n;
- return *this;
- }
- void ShowData() const
- {
- cout<<"num : "<
- }
- };
- void main()
- {
- const SoSimple obj(7);//const 객체 생성
- //obj.AddNum(20);//AddNum 은 const 함수가 아니기 때문에 호출 불가
- obj.ShowData();//ShowData는 const 함수 이기때문에 const 객체를 대상으로 호출이 가능
- _getch();
- }
/*
const 객체와 const 객체들의 특성
변수의 상수화
const int num = 10;
겍체의 상수화
const SoSimple sim(20);
이 객체를 대상으로는 const 멤버함수만 호출이 가능, 데이터 변경 불가
*/
- #include
- #include
- using namespace std;
- class SoSimple
- {
- private:
- int num;
- public:
- SoSimple(int n):num(n)
- {
- }
- SoSimple& AddNum(int n)
- {
- num += n;
- return *this;
- }
- void SimpleFunc()
- {
- cout<<"SimpleFunc : "<
- }
- void SimpleFunc() const
- {
- cout<<"const SimpleFunc"<
- }
- };
- void YourFunc(const SoSimple &obj)
- {
- obj.SimpleFunc();
- }
- void main()
- {
- SoSimple obj1(2);
- const SoSimple obj2(7);
- obj1.SimpleFunc();
- obj2.SimpleFunc();
- YourFunc(obj1);
- YourFunc(obj2);
- _getch();
- }
/*
const 선언유무도 함수 오버로딩 조건에 해당 된다.
void SimpleFunc() const
{
//값만 벼경되지 않는다면 const 가 아닌 변수에 접근도 가능하다.
cout<<"const SimpleFunc"<
}
*/
출처 열혈강의 C++
피드 구독하기:
글 (Atom)