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

 

相关文章
|
7月前
结构体例子
编写一个程序输出10个学生的姓名,性别,总分,语文,数学,外语成绩的成绩单。
52 3
|
2月前
学习使用register定义变量的方法
学习使用register定义变量的方法。
36 4
|
7月前
|
编译器 C++
struct 和 typedef struct 区别和用法总结
struct 和 typedef struct 区别和用法总结
136 0
|
7月前
来自C++primer5 的struct和class定义类的区别
来自C++primer5 的struct和class定义类的区别
37 0
|
7月前
|
存储 C++
[C++] 结构体Struct类型和变量定义
[C++] 结构体Struct类型和变量定义
130 0
|
C语言
【C语言】结构体 -- 结构体的声明 -- 定义和初始化 -- 成员的访问 -- 结构体传参
【C语言】结构体 -- 结构体的声明 -- 定义和初始化 -- 成员的访问 -- 结构体传参
|
程序员 C语言
assert断言与const修饰指针的妙用(模拟实现strcpy函数)
assert断言与const修饰指针的妙用(模拟实现strcpy函数)
go结构体嵌套和用结构体实现模拟“继承”
什么是结构体嵌套 一个结构体中可以嵌套包含另一个结构体或结构体指针
151 0
指针的介绍,定义,初始化
每个变量都有自己的地址,地址也是数据,就用地址类型的变量来装,地址类型就叫做指针类型,即指针类型定义的变量就是专门装地址的。
148 0
|
JSON 编译器 Go
Go-结构体类型详解(声明、初始化、结构体指针、方法、序列化等)
Go-结构体类型详解(声明、初始化、结构体指针、方法、序列化等)
204 0
Go-结构体类型详解(声明、初始化、结构体指针、方法、序列化等)