为了账号安全,请及时绑定邮箱和手机立即绑定

C++实例化对象时加()与不加()的区别

#include <iostream>
  2 using namespace std;
  3
  4 class Test
  5 {
  6 public:
  7         Test(){cout << "Test()" << endl;}
  8         ~Test(){cout << "~Test()" << endl;}
  9         Test(const Test &t){cout << "Test(const Test &t)" << endl;}
 10 private:
 11         int x;
 12         int y;
 13 };
 14
 15 int main()
 16 {
 17
 18         Test t1;
 19         Test t2();
 20         return 0;
 21 }

为什么实例化t2时不会执行构造函数?

正在回答

2 回答


A *a=new A; 和 A *a=new A(); 
都是调用A类的默认构造函数!!!!
但是如果单独声明一个A 类变量,如:A a;
则调用的是默认构造函数,
但是不能写成 A a()来调用默认构造函数!!因为这种形式会被识别成一个:
名称为a的不接受任何参数,返回值为A类型的函数!!!

2 回复 有任何疑惑可以回复我~
#1

onefor1 提问者

受教了!!!谢谢
2015-10-18 回复 有任何疑惑可以回复我~

难道是编译器理解为Test t2()为一个函数的声明?

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70919    人
  • 解答问题       514    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

C++实例化对象时加()与不加()的区别

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信