以下代码有什么问题(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,去掉括号后,就是调用的没有形参的构造函数。

 

相关文章
|
3月前
|
编译器 C++
struct 和 typedef struct 区别和用法总结
struct 和 typedef struct 区别和用法总结
31 0
|
3月前
|
C++ 开发者
类和对象一封装一c++中class和struct的区别
类和对象一封装一c++中class和struct的区别
22 0
|
3月前
来自C++primer5 的struct和class定义类的区别
来自C++primer5 的struct和class定义类的区别
26 0
|
3月前
|
存储 C++
[C++] 结构体Struct类型和变量定义
[C++] 结构体Struct类型和变量定义
77 0
|
11月前
类和对象-封装-struct和class的区别
类和对象-封装-struct和class的区别
33 0
|
12月前
|
编译器 C语言 C++
C++中的 class和struct区别
C++ 中保留了C语言的 struct 关键字,并且加以扩充。在C语言中,struct 只能包含成员变量,不能包含成员函数。而在C++中,struct 类似于 class,既可以包含成员变量,又可以包含成员函数。 C++中的 struct 和 class 基本是通用的,唯有几个细节不同: 使用 class 时,类中的成员默认都是 private 属性的;而使用 struct 时,结构体中的成员默认都是 public 属性的。 class 继承默认是 private 继承,而 struct 继承默认是 public 继承(《C++继承与派生》一章会讲解继承)。 class 可以使用模板,
106 0
go结构体嵌套和用结构体实现模拟“继承”
什么是结构体嵌套 一个结构体中可以嵌套包含另一个结构体或结构体指针
122 0
17-类和对象-封装-class和struct的区别
17-类和对象-封装-class和struct的区别
|
JSON 编译器 Go
Go-结构体类型详解(声明、初始化、结构体指针、方法、序列化等)
Go-结构体类型详解(声明、初始化、结构体指针、方法、序列化等)
176 0
Go-结构体类型详解(声明、初始化、结构体指针、方法、序列化等)
|
C语言 C++
void 类型不能用来初始化char* 类型的实体
void 类型不能用来初始化char* 类型的实体
438 0
void 类型不能用来初始化char* 类型的实体