(原創) 一個寫constructor常犯的錯 (C/C++)
以下程式,哪一行是錯的呢?
1
class Foo {
2
public:
3
Foo();
4
Foo(int i) {}
5
Foo(const char * name) {};
6
};
7
8
Foo::Foo() {}
9
10
int main() {
11
Foo foo;
12
}

2

3

4

5

6

7

8

9

10

11

12

答案第5行是錯的!!
第3行

為Foo()的定義,還需要Foo::Foo()去實做。
第4行

已經有body了,只是沒有程式而已,但語法正確。
第5行

若依照C++的語法,錯在最後加上了;,但我測了Visual C++ 8.0,gcc 3.4.2, BCB 6.0都可以過,不知是不是大家積非成是,compiler也妥協了?