可能重复:
使用空括号调用默认构造函数时出错
我附上了一个测试程序。问题:
如果我像下面这样声明,则不会创建任何对象,并且不会调用默认构造函数。'grCell c3();' // 坏的
但是,这样声明是可以的。创建一个对象并调用它的构造函数。'grCell c1;' // 好的
'grCell c3()' 和 'grCell c1' 有什么区别?
谢谢!
托德
// - - 开始 - - - -
#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);
}
// - - - 结尾 - - -