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멤버변수와 멤버함수만 호출가능하다.