C++调用无参构造函数
在声明类对象时,如果想调用类的无参构造函数,一般会直接声明,不加括号。举个例子
class Foo { public: Foo() { std::cout << "constructor without arguments called"; } void show(){ std::cout << "show foo"; } } int main() { Foo foo; //运行正常 //Foo foo{}; //运行正常 //Foo foo(); //编译报错 foo.show(); return 0; }
声明为"Foo foo;"时,上述代码可以正常运行;改为"Foo foo();"时,编译时报错;改为"Foo foo{};"时,编译时报错;
原因是,"Foo foo();"会被被编译器当成一个函数声明:无参,返回值为Foo类型,foo会被当成函数地址,后面的"foo.show();"自然无法正确编译。
而使用初始化列表形式的"Foo foo{};"则无此歧义,会正确的调用无参构造函数声明一个Foo类对象,编译正常
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律