class Test
{
public:
Test(int &rhs)
:data(rhs)
{
//data(rhs); 는 오류. 초기화가 아닌 대입연산이기 때문
}
private:
int &data;
};
아니 뭐 당연히 참조형식이니까 선언과 동시에 초기화를 해줘야하는건 알겠는데
생성자 초기화목록에서 초기화하는거랑 생성자 내부 스코프에서 초기화한느거랑 뭔차이임?
그냥 문법적인 차이인가요?
class Test
{
public:
Test(int &rhs)
:data(rhs)
{
//data(rhs); 는 오류. 초기화가 아닌 대입연산이기 때문
}
private:
int &data;
};
아니 뭐 당연히 참조형식이니까 선언과 동시에 초기화를 해줘야하는건 알겠는데
생성자 초기화목록에서 초기화하는거랑 생성자 내부 스코프에서 초기화한느거랑 뭔차이임?
그냥 문법적인 차이인가요?
함수 내에 초기화 한다면 함수 내에 쓰인 다른 코드들이 그 참조가 초기화 되기 전에 동작해야할 것 같잖아.
그럼 말이 안되는거지. 참조란건 컴파일 시간에 끝나야 하는 건데.
쉽게 생각하려면 단순히 약속이고.
심심하면, 생성자 초기화 목록이랑 생성자 함수 내부에 브레이크 포인트 찍고, 어떤 순서로 실행되는지 체크해봐
감사합니다..컴파일타임에 끝나야한다는게 확와닿네요