여러 클래스로 구성된 클래스가 있고 여러 생성자가 있습니다. 나는 또한 어떤 매개 변수를 사용하지 않는 생성자를 가지고,하지만 난 할 때이 기능을 사용하려면생성자의 이상한 동작
int main {
A a;
}
내가 이런 식으로 사용하는 경우 동안 컴파일러, 오류가 발생합니다
int main {
A a();
}
그것은이다 승인. 그게 뭐야?
는여러 클래스로 구성된 클래스가 있고 여러 생성자가 있습니다. 나는 또한 어떤 매개 변수를 사용하지 않는 생성자를 가지고,하지만 난 할 때이 기능을 사용하려면생성자의 이상한 동작
int main {
A a;
}
내가 이런 식으로 사용하는 경우 동안 컴파일러, 오류가 발생합니다
int main {
A a();
}
그것은이다 승인. 그게 뭐야?
는첫 번째 main
는 A의 기본 생성자를 사용하여 감사드립니다. 두 번째 함수는 매개 변수를 사용하지 않고 값으로 A를 반환하는 함수를 선언합니다.이 함수는 의도 한 것이 아닙니다.
그렇다면 A의 정의는 어떻게 보이고 컴파일러에서 생성되는 오류는 무엇입니까?
아, 그리고 당신이 주요의 선언에서 매개 변수 목록을 제공해야합니다 int main() { //...
하지 int main { //...
확인함으로써 당신은 컴파일 또는 작동한다는 것을 의미? 코드의 라인 :
A a();
이 매개 변수를 사용하지 않는 입력 A
의 개체를 반환 a
라는 함수의 선언 (또는 프로토 타입)입니다.
누군가가 귀하의 실제 문제에 도움을 줄 수있는 사람이 있다면 최소한 class A
에 대한 신고서를 게시해야한다고 생각합니다.
둘 다 맞았습니다. 안에 클래스가 있습니다.
Charles와 Michael Burr은 둘째 두 번째 선언이 실제로 함수 프로토 타입이며 A
의 인스턴스가 아니라는 것을 확인했습니다.
, 당신은이 상황에서 컴파일 오류가 발생 할 때
A
상속; 또는A
에는 기본 생성자가없는 형식의 개체가 포함되어 있습니다. 또는A
에는 참조 구성원이 들어 있습니다.그리고 당신은 그것의 initialiser 목록에서이 하위 개체 중 하나 이상을 생략 기본 생성자를 제공 한
.이러한 하위 개체는 모두 초기화 할 수있는 방법이 필요하며 컴파일러에서 생성 한 기본 생성자는이를 수행하지 않습니다. 모든 경우에 초기화 프로그램 목록에서 초기화해야하며 본체 인 생성자는 초기화하지 않아야합니다.