首页 > 编程语言 > 详细

C++ Primer Plus 第六版笔记

时间:2015-08-14 21:10:17      阅读:160      评论:0      收藏:0      [点我收藏+]

C++ Primer Plus 第六版笔记

关于对象声明的思考

转自:http://www.cnblogs.com/weiqubo/archive/2009/11/02/1930042.html

 

  1. #include <iostream>  
  2. class MyClass  
  3. {  
  4. public:  
  5.     MyClass()   
  6.     {   
  7.         std::cout << "Hello MyClass!" << std::endl;   
  8.     }  
  9. public:  
  10.     void MyMethod()   
  11.     {   
  12.         std::cout << "Hello MyMethod!" << std::endl;   
  13.     }  
  14. };  
  

 

如果这样定义对象:MyClass obj; 那么它的构造函数将会被执行,如果调用obj.MyMethod();也会执行正确。
可是如果带有括号:MyClass obj(); 那么它的构造函数不会被执行,调用obj.MyMethod();也会出现语法错误,请问这种语法是把obj定义成什么了?

MyClass obj()把obj定义成什么 从语法上看是定义了一个名为obj,类型为MyClass类(也就是返回值为MyClass类型)的无参数函数。

另外如果进行动态的堆分配的话是要带括号的,比如 MyClass *obj = new MyClass() 不加会报错(但是,在vc6.0中不加()并没有报错,而且结果是一样的,原因待解?但是有一条,如果类中定义了带参数的构造函数,定义类时不用括号肯定是错误的#add  为避免错误,统一加括号为妙)

C++ Primer Plus 第六版笔记

原文:http://www.cnblogs.com/flylong0204/p/4731005.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!