c++ - 类名类对象();不调用任何构造函数
问题描述
如果我有以下情况:
#include <iostream>
using namespace std;
class A {
public:
A() {
cout << "Inside A" << endl;
}
};
int main() {
A a();
return 0;
}
为什么没有调用构造函数?
解决方案
如果某些东西看起来像函数声明,则 C++ 标准要求将其视为函数声明。
A a();
不默认构造a
类型的对象A
。它声明了一个a
不接受输入参数并返回一个A
对象作为输出的函数。
要默认构造变量a
,您需要删除括号:
A a;
或者,在 C++11 及更高版本中,您可以使用花括号代替括号:
A a{};
推荐阅读
- node.js - 运行任何 npm 命令时出错
- elasticsearch - 如何激活和配置 ElasticSearch Kafka Connect 接收器?
- html - Angular 2 Form 帮助...后端功能
- javascript - 如何在创建实际的 SVG 元素(在 Angular 中)之前测量 SVG 中字符串的宽度
- r - R ggplot:如何使用边缘箱形图创建散点图
- javascript - 按属性内对象中的自定义顺序排序
- java - 是否可以在单元测试中绕过某些异常?
- java - 添加 JLabel 和 JButton 后看不到 JTextField
- java - 在 Spring Boot / FreeMarker 中加载图像时出现问题
- javascript - Javascript不调用函数