2014-11-21 82 views
-3
#include <iostream> 
using namespace std; 
class A{ 
public: 
    A(){cout << "A()" << endl; } 
    A(string s): str(s){ cout << "A(" << str << ")" << endl; } 
    ~A(){ cout << "delete!" << endl;} 
    string str = "000"; 
}; 
int main(int argc, char** argv) 
{ 
    //A a0; // it will call A() by default 
    A a1(); //even if i comment A(), the compiler will no warn me anything 
    A a2("123"); 
    cout << a2.x << endl; 
    return 0; 
} 

輸出:但構造函數如何工作?

A(123) 
123 
delete! 

所以,我只是想知道爲什麼 「A A1();」無法正常工作?有人可以幫助我嗎?謝謝!

+2

拼寫錯誤'',而'A(字符串s)'指的是不存在的'x'變量。請發佈您的實際代碼。 – jwodder 2014-11-21 17:26:23

+0

這可能是重複的,但這不是真正正確的鏈接問題。 – 2014-11-21 17:28:45

+0

@JamesCurran如果你有更好的一個,你可以重新打開它(然後再關閉,我想)。 – jrok 2014-11-21 17:29:36

回答

2

A a1();是一個函數原型,不帶任何參數並且返回一個A

+0

誰低估了這個:最煩人的解析。看看它。 – Borgleader 2014-11-21 17:26:56

+0

int a(5); – ventsyv 2014-11-21 17:29:36

+0

'int a(5);'不能是函數聲明,因此必須是變量定義,具體相當於'int a = 5;' – 2014-11-21 17:31:23