C++ 관련 초보적인 질문
글쓴이: canuyes / 작성시간: 월, 2012/10/22 - 5:29오후
A라는 클래스가 B라는 클래스를 포함할때,(상속의 의미 아님. B를 A의 객체 멤버로 포함하는 경우를 이야기하고자 함)
B클래스의 생성자를 통한 초기화를 하고자 합니다.
이때
초기화를 private 영역에서 괄호를 이용하여 하는 것이 금지되어 있더군요.
class A{
private:
A(10,10);
...
이런 식으로 말입니다.
보통 멤버 이니셜라이져 영역에서 초기화하곤 했었기에 갑자기 혼란스럽습니다.
private영역에서 안되는 것이 맞나요?
맞다면 그 이유는 무엇일까요?
Forums:
class A { public:
이런것을 원하시는건가요?
참고로, private이냐 public이냐와는 상관이
참고로, private이냐 public이냐와는 상관이 없는 부분들입니다.
단지, 멤버변수의 초기화를 명시할때,
선언 부분에 직접 (10, 10) 이런식으로 명시할수 없을뿐입니다. 이것은 그냥 문법이고요.
모든 멤버변수의 초기화는 (public에 있던, private에 있던 뭐든간에)
해당 class의 생성자에서 하는것입니다.
이건..문법이니 외우시길..
위에 쓴
A()
: member1( 10, 10 )
처럼..
생성자에서 초기화를...
객체처럼 크기가 큰 경우라면, 그냥 포인터 변수만
객체처럼 크기가 큰 경우라면, 그냥 포인터 변수만 선언해주고
생성자에서 new 연산자를 이용해 초기화해주는 방법도 괜찮겠다는 생각이 듭니다.
저는 이렇게 생각했습니다.
댓글 달기