c++ - 当我在对象名称后使用括号时未调用用户定义的构造函数
问题描述
#include<iostream>
using namespace std;
class A
{
public:
A()
{
cout<<"inside constructor\n";
}
};
int main()
{
A object1;
A object2();
}
运行上面的代码给出了以下输出
$./class.out
inside constructor
在这里,仅用于object1
创建用户定义的构造函数,而不是用于object2
. 在后一种情况下不调用用户定义的构造函数的原因可能是什么?
解决方案
A object2();
声明一个被调用的函数object2
,它不接受任何参数并返回一个A
. 它不会创建一个A
名为object2
.
您可以A object2;
像使用 一样使用object1
,也A object2{};
可以做您想做的事情。
推荐阅读
- kubernetes - 命名空间的 Kubernetes 最大可用 cpu/mem 资源配额是多少?
- azure - 将需要磁盘存储的应用部署到 Azure 应用服务
- html - 无法让我的网站徽标与汉堡包图标出现在同一行
- swift - NSTableView 和 swift:按下箭头并选择最后一行时如何选择第一行?
- java - 在 JUnit 测试中强制出现 JAXBException
- python - 无法连接管道工 - 获得网络错误 404 localhost:3582
- python - 如何将 for 循环中的元素打印到列表中?
- lua - lua和javascript之间的不同数字浮点数
- powershell - 如何使用 PowerShell 在 Windows 2008 R2 中获取脱机群集物理磁盘资源的磁盘编号
- join - 如果值存在,使用 linux join 命令更新文本文件中的字段