두 개의 생성자가있는 클래스가 있는데 하나는 인수를 사용하지 않고 다른 하나는 인수를 사용합니다.
하나의 인수를 취하는 생성자를 사용하여 객체를 생성하면 예상대로 작동합니다. 그러나 인수를 사용하지 않는 생성자를 사용하여 객체를 만들면 오류가 발생합니다.
예를 들어,이 코드를 컴파일하면 (g ++ 4.0.1 사용) ...
class Foo
{
public:
Foo() {};
Foo(int a) {};
void bar() {};
};
int main()
{
// this works...
Foo foo1(1);
foo1.bar();
// this does not...
Foo foo2();
foo2.bar();
return 0;
}
... 다음과 같은 오류가 발생합니다.
nonclass.cpp: In function ‘int main(int, const char**)’:
nonclass.cpp:17: error: request for member ‘bar’ in ‘foo2’, which is of non-class type ‘Foo ()()’
이것이 왜 왜 작동합니까?