1. const
- 변수처럼 객체도 상수화할 수 있다.
const int num = 10;
const Simple sim(10);
객체를 상수화하는 것은 이 객체가 const 멤버함수만 호출이 가능하도록 만든다. (모든 객체변수가 상수화되는듯)
- const 선언유무로 인한 오버로딩이 가능하다.
// 오버로딩
void SimpleFunc() {}
void SimpleFunc() const {}
2. friend
- friend 선언은 private 멤버의 접근을 허용하는 선언이다.
- 이는 함수나 객체에 선언할 수 있다.
class Person
{
private:
int age;
friend class Rion; // Rion 객체 내의 함수에서 Person.age로 멤버변수에 접근가능
public:
Person(int age):age(age){}
}
하지만 이는 객체지향의 '정보은닉'을 무너뜨리는 문법이기에 조심해서 사용해야한다.
나중에 연산자 오버로딩을 공부하면 사용하게 된다.
가능하면 GetAge 등의 멤버함수를 따로 만들어서 사용하도록 하자
3. static
C에서 배운 static
전역변수에 붙이면 선언된 파일내에서만 참조가능
지역변수에 붙이면 한번만 초기화되고 함수가 끝나도 소멸되지 않는다.
- 멤버변수에 붙이면 하나의 객체내에 존재하는 변수가 아닌 클래스당 하나씩 존재한다.(클래스로 객체를 단 하나도 생성하지 않아도 static 멤버변수는 존재한다.)
- 같은 클래스로 선언된 객체들은 하나의 static 멤버변수를 공유한다.
#include <iostream>
using namespace std;
class Person
{
private:
static int countPerson;
public:
Person()
{
countPerson++;
cout << countPerson << "번째 사람" << endl;
}
};
int Person::countPerson = 0; // static 멤버변수 초기화
int main()
{
Person kim;
Person park;
Person Lee;
return 0;
}
1번째 사람
2번째 사람
3번째 사람
Process returned 0 (0x0) execution time : 0.373 s
Press any key to continue.
static 멤버함수
멤버함수에 static 키워드를 붙이면 멤버변수를 참조할 수 없다. (static 멤버변수만 참조가능)
4. mutable
- 변수앞에 붙이게되며 const 함수 내에서의 값의 변경을 예외적으로 허용하게 만드는 키워드이다
설명에서만 봐도 가급적 사용을 줄여야 됨을 알 수 있다. ( const의 의미가 퇴색됨)
'프로그래밍 언어 > 열혈 C++' 카테고리의 다른 글
08 상속과 다형성 by 윤성우의 열혈 C++ (0) | 2022.03.08 |
---|---|
07 상속의 이해 by 윤성우의 열혈 C++ (0) | 2022.03.08 |
05 복사 생성자 by 윤성우의 열혈 C++ (0) | 2022.03.06 |
04-4 클래스와 배열 그리고 this 포인터 by 윤성우의 열혈 C++ (0) | 2022.03.05 |
04-3 생성자와 소멸자 by 윤성우의 열혈 C++ (0) | 2022.03.04 |