以下代码有什么问题(struct构造问题)

 struct   Test  
  {  
          Test(   int   )   {}  
          Test()   {}  
          void   fun()   {}  
  };  
  void   main(   void   )  
  {  
          Test   a(1);  
          a.fun();  
          Test   b();  
          b.fun();  
  } 

解答:

 b.fun();   //b不是Test的实例对象

类是结构体的扩展,在类中封装了对数据成员的操作,缺省的成员为私有的,而结构体为公有的,这就是它们的区别,对构造函数的调用,如果没有参数,是不需要加上括号的,如果加了括号,就不是定义一个对象了,而是声明了一个函数,返回该类型,所以上面的Test   b(),实际上是调用一个函数名为b,返回类型为Test的函数,而不是创建了一个对象b,去掉括号后,就是调用的没有形参的构造函数。

原文地址:https://www.cnblogs.com/zhangdongsheng/p/1862506.html