본문 바로가기

2009/0116

클래스와 const const ! 첫째! const키워드는 변수의 선언앞에서 붙어서 변수를 상수화 한다. 둘째! const 키워드는 포인터가 가리키는 데이터를 상수화한다. int n =10; const int* p =&n; *p = 20 ; // 컴파일 오류 p를 가지고 접근을하는것은 오류지만 n의 값을 바꿀수는 잇다.. 셋째! const키워드는 포인터 선언시 이름 앞에 붙어서 포인터 자체를 상수화 한다. int n1 = 10 ; int n2 = 20 ; int* const p = *n1 ; *p = 20; p = &n2; // 컴파일오류 p를 상수화 시켜서 가리키는것을 바꾸지 못함.... 멤버 이닐셜라이저 : 몸체 부분이 실행되기 이전에 실행이 된다 // 생성자 몸체보다 먼저 실행되게하여 const멤 버 초기화 용도로도 .. 2009. 1. 14.
복사 생성자가 호출되는 시점 복사 생성자가 호출되는 시점은 다향하다 물론 복사 생성자를 적절히 정의했다면 언제 호출되건 신경 쓰지 않아도 된다. 그러나 보다 효율적인 프로그램 작성을 위해서는 복사 생성자가 호출되는 시점을 정확히 이해 하고 있어야 한다. 복사 생성자가 호출되는 시점은 - 1. 기존에 생성된 객체로 새로운 객체를 초기화하는 경우 2. 함수 호출 시 객체를 값에 의해 전달하는 경우 3. 함수 내에서 객체를 값에 의해 리턴하는 경우 Call - by -Value 에 의한 함수 호출 과정 1. 매개 변수를 위한 메모리 공간 할당 2. 전달 인자 값의 복사 -ps : 매개 변수도 일종의 지역 변수, 초기화 되는 시점이 함수가 호출되는 시점이라는 것만 제외하면 그 특징이 지역 변수와 같다!! 객체를 Call-By-Value 로.. 2009. 1. 8.
복사생성자 의미 필요성 정의 int val1= 20; 2009. 1. 8.
const 함수 const 함수는 상수화 시킨다는 의미이다 멤버 변수의 값을 변경하지 않는 범버 함수 인 경우 const 함수로 만들수 있다. 멤버 함수를 Const 함수로 만들면 좋은 점 §다른 개발자가 “아, 이 함수는 멤버 변수의 값을 변경하지 않는구나”라고 생각하게 만든다. §실수로 멤버 변수의 값을 바꾸려고 하면, 컴파일러가 오류 메시지를 통해서 알려준다. §객체가 Const 속성을 가진 경우에는 Const 함수만 호출할 수 있다. class cellphone { public: int bell; void call(int quick); void showdata() const; 2009. 1. 6.