이의 나가로 정의 된 구조체가 있다고 가정하자 :C++에서 중괄호를 사용하여 객체를 인스턴스화한다는 것은 무엇을 의미합니까?
typedef
struct number{
int areaCode;
int prefix;
int suffix;
} PhoneNumber;
나는이 구조체의 인스턴스를 생성, 나는 다음과 같은 구문을 사용하는 경우 :
PhoneNumber homePhone = {858, 555, 1234};
... 그것은 생성자를
를 호출을? 기본 생성자 또는 복사 생성자 또는 'new'를 호출하지 않기 때문에 전혀 생성자가 없습니다.이 질문의 진정한 목적은 네 번째 필드를 추가하는 방법을 찾는 것입니다.
PhoneNumber officePhone = {858, 555, 6789, 777}
그러나, 이미 만든이 PHONENUMBER 인스턴스의 수백 : 그래서 지금
typedef
struct number{
int areaCode;
int prefix;
int suffix;
int extension; // NEW FIELD INTRODUCED
} PhoneNumber;
, 나는 네 개의 필드와 함께 새로운 PHONENUMBER 개체를 만들 수 있습니다 : 그래서 나는 나의 구조체를 다시 정의 할 3 개의 필드 (xxx, xxx, xxxx) 만 있습니다. 따라서 이미 정의 된 PhoneNumber 객체의 모든 단일 인스턴스화를 검토하고 수정하고 싶지는 않습니다. 나는 혼자 남겨 둘 수 있기를 원하지만 4 개 필드로 새 전화 번호 인스턴스를 만들 수 있어야합니다. 그래서 기존의 세 매개 변수 인스턴스화가 중단되지 않도록 생성자를 덮어 쓰는 방법을 알아 내려고 노력하고 있지만 새 매개 변수 인스턴스화도 지원합니다.
3 필드를 사용하고 네 번째를 기본값 '0'으로 설정하는 재정의 기본 생성자를 정의하려고하면 생성자 정의가 아닌 인스턴스화 부분에서 오류가 발생합니다. {...}이 아닌 생성자에 의해 초기화되어야합니다. 따라서 기본 생성자를 재정의하면 더 이상 중괄호를 사용하여 새 객체를 만들 수 없습니다.
죄송합니다. 원래의 질문에서 완전히 벗어나면 죄송합니다.
관련 : [http://stackoverflow.com/questions/88957/what-does-0-mean-in-c/88960#88960](http://stackoverflow.com/questions/ 88957/what-does-0-mean-in-c/88960 # 88960) –