可能重複:
Error on calling default constructor with empty set of bracketsc + +聲明一個對象與括號
我具有連接一個測試程序。 問題:
如果我聲明如下,沒有反對創建和 未調用默認構造函數。 'grCell c3();' // bad
但是, 聲明像這樣可以。一個對象被創建並且它的構造函數被調用。 'grCell c1;' // good
'grCell c3()'和'grCell c1'之間的區別是什麼?
謝謝!
託德
// ---- BEGIN -------
#include <iostream>
#include <cstdio>
typedef unsigned int uint;
using namespace std;
//
class grCell {
public:
grCell() { printf("HERE_0\n"); };
grCell(int i) { printf("HERE_1\n"); };
~grCell() {};
void setX(int x) { _x = x; }
//
//
private:
int _x:22;
};
int main()
{
grCell c1; // good
c1.setX(100);
grCell c3(); // bad
c3.setX(100);
grCell c2(5);
c2.setX(10);
}
// ------ END ------
然後* next *行會導致編譯器錯誤,因爲'c3'函數沒有'setX()'成員。 –
@GregHewgill:確實:) –