#include <iostream>
using namespace std;
class CTest
{
int x;
public:
CTest()
{
x = 3;
cout << "A";
}
};
int main () {
CTest t1;
CTest t2();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
CTest t1当然会打印"A".
但似乎没有任何事情发生在t2(),但代码运行良好.
那么我们在没有参数的情况下使用这些括号吗?或者为什么我们这样使用呢?
tem*_*def 19
这是C++语法的一个怪癖.这条线
CTest t1;
Run Code Online (Sandbox Code Playgroud)
声明一个CTest名为的类型的局部变量t1.它隐式调用默认构造函数.另一方面,线
CTest t2();
Run Code Online (Sandbox Code Playgroud)
是不是一个变量声明,但被调用函数的局部样机t2,它没有参数和返回CTest.不需要构造函数的原因t2是因为这里没有创建对象.
如果要声明对象类型的局部变量并使用默认构造函数,则应省略括号.
在C++ 11中,您也可以说
CTest t2{};
Run Code Online (Sandbox Code Playgroud)
哪个实际上调用默认构造函数.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
11794 次 |
| 最近记录: |