关于C++中的struct的问题(续)

pi1ot 2002-05-30 05:50:43
下面那个打不开了,请在这里继续发言。

----------------------------------------------------------------
既然c++中的struct只是成员public的class,那么在声明一个struct对象
的时候编译器是否也生成了默认的也就是空的构造函数和析沟函数?
struct中的对象实现是否和class一样?有什么区别?
----------------------------------------------------------------

还有刚才发言了的想要分的话请在这里留言。
...全文
44 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
* 在使用类与结构的抉择上,如果希望建立对象并且在这个设计中有定义好的实体,那么就创建类定义,如果仅仅为看到结构的内容,使结构做为数据变量的集合体那和就创建一个结构的定义;
* 通常在默认情况下,类中的成员是私有的而结构中的成员是公有的;
* 结构完全有类的全部特性(除应用时机与上述区别外);
  • 打赏
  • 举报
回复
* 在使用类与结构的抉择上,如果希望建立对象并且在这个设计中有定义好的实体,那么就创建类定义,如果仅仅为看到结构的内容,使结构做为数据变量的集合体那和就创建一个结构的定义;
* 通常在默认情况下,类中的成员是私有的而结构中的成员是公有的;
* 结构完全有类的全部特性(除应用时机与上述区别外);
richard_hu 2002-05-30
  • 打赏
  • 举报
回复
回答一致!:)
leasun 2002-05-30
  • 打赏
  • 举报
回复
struct之所以默认的访问权限为public,是为了和C兼容
leasun 2002-05-30
  • 打赏
  • 举报
回复
struct之所以默认的访问权限为public,是为了和C兼容
delphihero 2002-05-30
  • 打赏
  • 举报
回复
岂止 struct 如此 union 也是这样的类。不过 union 数据成员公用一块内存而已。
meiwenhua 2002-05-30
  • 打赏
  • 举报
回复
据我所知,struct与class只是默认访问类型不同;
又因为构造函数和析沟函数在class中肯定以public设立的(不是吗?我觉得我从来没遇到过以private 的构造函数和析沟函数)
所以我做了一假设,既然struct的默认是public所以其成员函数也会默认是public。同样构造函数和析沟函数也是public对于编译器来讲,这样的定义是很容易与class兼容的并且实现的。是复合逻辑的,
所以对于编译器制造商来说因该没什么难的。
如果不信,你自己试试。同样我觉得对于继承,多态等也可以按这种逻辑推出。
mylove0618 2002-05-30
  • 打赏
  • 举报
回复
struct仅仅是一个特殊的类,默认成员属性为pulbic.除此之外,与一般的类没有什么区别。你可以验证之。
zfluo 2002-05-30
  • 打赏
  • 举报
回复
可以参考《深度探索C++物件模型》
real_chang 2002-05-30
  • 打赏
  • 举报
回复
对,声明对象时只是调用,因为class或struct已经被共享了,只需从内存中的相应位置调用即可
lizhongkun 2002-05-30
  • 打赏
  • 举报
回复
我想楼上说得很对
晨星 2002-05-30
  • 打赏
  • 举报
回复
应该有吧,我觉的在C++里,除了默认得成员属性是public之外,其它跟class也没什么区别。而且struct也可以继承。
但是,构造函数和析构函数不是像你所说的“在声明一个struct对象
的时候生成”,而是在编译时为struct生成。当声明时应该是调用。
AdvRom 2002-05-30
  • 打赏
  • 举报
回复
它就是一个默认权限是public的class。
其它的,class什么样struct就是什么样,没有任何区别。

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧