(原創) 一個寫constructor常犯的錯 (C/C++)
以下程式,哪一行是錯的呢?
1class Foo {
2public:
3 Foo();
4 Foo(int i) {}
5 Foo(const char * name) {};
6};
7
8Foo::Foo() {}
9
10int main() {
11 Foo foo;
12}
2public:
3 Foo();
4 Foo(int i) {}
5 Foo(const char * name) {};
6};
7
8Foo::Foo() {}
9
10int main() {
11 Foo foo;
12}
答案第5行是錯的!!
第3行
Foo()
為Foo()的定義,還需要Foo::Foo()去實做。
第4行
Foo(int i) {}
已經有body了,只是沒有程式而已,但語法正確。
第5行
Foo(const char * name) {};
若依照C++的語法,錯在最後加上了;,但我測了Visual C++ 8.0,gcc 3.4.2, BCB 6.0都可以過,不知是不是大家積非成是,compiler也妥協了?