[Modern C++] 4.4. 생성자 초기화 리스트, static 변수, this 포인터, const 멤버 함수

윤정민·2023년 6월 30일
0

C++

목록 보기
12/46

1. 생성자의 초기화 리스트(initializer list)

  • 생성자 호출과 동시에 멤버 변수들을 초기화 가능하다.
class Test {
    int a;
    int b;
    Test();
}

Test::Test() : a(1), b(2) {}
  • 초기화 리스트를 사용하지 않으면 생성을 먼저하고 그 다음에 대입을 수행
    • 생성 즉시 초기화(복사 생성자 호출)
    int a = 10;
    • 생성후 초기화(디폴트 생성자 호출 + 대입 수행)
    int a;
     a = 10;

1.1. 생성과 동시에 초기화되어야 하는 것들

  • 상수와 레퍼런스는 생성과 동시에 초기화가 되어야 함

2. static 변수

  • 클래스 하나에만 종속되는 변수로 모든 객체들이 공유 가능
  • 생성된 객체들의 갯수를 셀 때 static 멤버 변수를 활용하면 쉽게 구할 수 있음

3. this 키워드

  • this는 객체 자신을 가리키는 포인터의 역할을 수행
  • static 함수는 this사용 불가

4. 레퍼런스를 리턴하는 함수

class A {
    int x;
public:
    A(int c) : x(c) {}
    int& access_x() { return x; }
    int get_x() {return x; }
};

int main() {
    A a(5);
    
    int& c = a.access_x();
    c = 4;
    
    int& d = a.get_x(); // 오류
    d = 4;
    
    int e = a.access_x();
    e = 3;
}
  • 값을 리턴하면 레퍼런스로 받는 것이 불가함

5. 상수 함수(const 함수)

변수들의 값을 바꾸지 않고 읽기만 하는(마치 상수 같음) 멤버 함수를 상수 함수로 선언 가능하다.

  • 클래스 내부 멤버 변수 값을 바꾸지 않는다는 것을 보장함
Test::Test get_a const { return this->a; }
profile
그냥 하자

0개의 댓글