1
는 다음 클래스 받아 제작 : 때문에 푸내 생성자 건설에 대해 적어도 하나 개의 값을 지정하고, 아직이 될 수있는 기본은
class Foo{
public:
Foo(std::string bar_, int baz_ = 7)
:bar(bar_)
,baz(baz_)
{}
private:
std::string bar;
int baz;
};
을 (표준 : : 문자열 bar_, INT baz_ = 7); 내 유일한 생성자, 컴파일러가 나를 위해 기본 생성자를 구현해서는 안됩니다? 이 클래스를 구성 할 수있는 유일한 두 가지 방법은 다음과 같습니다.
Foo foo("foo");
//or
Foo foo("foo",0);
//plus copy constructor and overloaded assignment operator.
그러나 이것이 가능한 이유는 무엇입니까?
int main(){
Foo foo();
}
유일한 공용 생성자가 첫 번째 매개 변수의 값을 요구할 때 클래스를 어떻게 구성 할 수 있는지 이해할 수 없습니다. 기본 생성자를 private로 만들거나 C++ 11을 삭제하려고해도 아무런 차이가 없습니다. 어떻게 된 일인가? Foo foo();
때문에
http://ideone.com/CL7IZo
main에서'foo' 심볼은 Foo 유형의 인스턴스가 아닌 함수입니다. – mythagel
괄호없이 객체를 인스턴스화 해 봅니다 (영어로 작성하는 방법). http://en.wikipedia.org/wiki/Most_vexing_parse :) – Nbr44
왜이 정확한 구문 문제가 마지막으로 세 번 나옵니 까? 10 시간? – chris