C++
[#7 열혈강의 C++]
Kmentor
2021. 7. 8. 00:01
2021-07-07
[Chapter 06] friend, static, const
함수의 오버로딩에서 const 선언의 유무도 오버로딩의 조건에 해당한다.
-> 일반 객체를 대상으로 함수를 호출하면 일반멤버함수가 호출되지만, const객체를 대상으로 함수를 호출하면
const멤버함수가 호출된다.
A클래스에서 friend class B와 같이 B클래스를 friend 선언을 하게되면, B클래스 내부에서 A의클래스의
모든 private 영역에 접근이 가능하다. 이 선언은 private, public영역 둘다에서 선언 가능하다.
static멤버 변수는 '클래스 변수' 라고도 한다. -> 클래스당 하나씩만 생성.
static멤버 변수는 메모리공간에 딱 하나만 할당된다.
생성자에서 static변수를 초기화하지 않는다. -> 별도로 int SoSimple : : simObjCnt = 0; 과 같이 초기화를 해준다.
-> staitc멤버변수는 메모리에 별도로 존재한다. 따라서 생성자에서 초기화를 하게되면 이 생성자가 호출 될 때마다 static멤버변수는 그 값으로 계속 초기화된다.
static 멤버 함수 는 선언된 클래스의 모든 객체가 공유하고 있다. public 으로 선언되면 클래스의 이름을 이용해 호출 가능하다. 이 함수는 객체의 멤버가 아니다.
static 멤버함수에서 그 클래스의 멤버변수에 접근이 불가능하다. -> static멤버함수에선 static멤버변수와 멤버함수만 호출가능하다.