关于struct的一个基础问题

beiyang9 2008-10-31 02:59:49
请教一个基础问题!

下面这个是类
struct S
{
int a;
S(){}
void fun(){}
};

那下面这个是类么,为什么?
谢谢
struct S
{
int a;
void fun(){}
};

...全文
115 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
javascript2008 2008-10-31
  • 打赏
  • 举报
回复
struct就是特殊的类,它所有的成员缺省的都是public访问权限
class的成员缺省的都是private访问权限
beiyang9 2008-10-31
  • 打赏
  • 举报
回复
还是很乱,下面那个是可以用大括号来初始化的,说明与类还是有区别的,不追究,结贴了,谢谢大家捧场。
jia_xiaoxin 2008-10-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 beiyang9 的帖子:]
请教一个基础问题!

下面这个是类
struct S
{
int a;
S(){}
void fun(){}
};

那下面这个是类么,为什么?
谢谢
struct S
{
int a;
void fun(){}
};
[/Quote]

C++扩展了C中的结构,使的它与类的功能几乎一样,唯一不同的是,类默认成员为private,而结构体默认成员为public.
所以上面两个都是类,不显示声明构造函数,会生成一个默认的构造函数。
chenzhp 2008-10-31
  • 打赏
  • 举报
回复
既然都C++了。该使用类来进行一些数据封装,这样可以支持更多的特性。
beiyang9 2008-10-31
  • 打赏
  • 举报
回复
那这样的话,也就是说struct与class的区别还是很大的,毕竟即使带有方法的struct也不会被强迫当成c++对象来处理。
Leejun527 2008-10-31
  • 打赏
  • 举报
回复
在C++中只有两点区别:
(1)class中默认的成员访问权限是private的,而struct中则是public的。
(2)从class继承默认是private继承,而从struct继承默认是public继承。
除此这外无任何区别。

再补充一点:c++中的结构体也可以包含虚函数,也可实现多态。
http://topic.csdn.net/t/20060829/10/4982729.html#
enrico 2008-10-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 beiyang9 的回复:]
可能是我表述不对,那这两个结构体有本质区别么?为什么
[/Quote]

没本质区别,只不过第一个你明确定义了构造函数,所以你在定义对象的时候只能
S s;
S *s = new S;
不能S s={0};
beiyang9 2008-10-31
  • 打赏
  • 举报
回复
LS的意思就是这两个东西其实一样了,也就是说下面那个结构体也会提供一个默认构造函数了,不过好像不对劲啊
stardust20 2008-10-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 killbug2004 的回复:]
类用class关键字,struct定义的是结构体,结构体也可以有成员函数
结构体与类的区别:
结构体中的数据默认方式是public的,而类是private的
结构体不提供继承机制,类提供继承机制,实现代码复用
类可以实现多态,结构体不支持
[/Quote]
支持
killbug2004 2008-10-31
  • 打赏
  • 举报
回复
类用class关键字,struct定义的是结构体,结构体也可以有成员函数
结构体与类的区别:
结构体中的数据默认方式是public的,而类是private的
结构体不提供继承机制,类提供继承机制,实现代码复用
类可以实现多态,结构体不支持
beiyang9 2008-10-31
  • 打赏
  • 举报
回复
可能是我表述不对,那这两个结构体有本质区别么?为什么
chenzhp 2008-10-31
  • 打赏
  • 举报
回复
struct也是类么?还真没有用过
晕了晕了 2008-10-31
  • 打赏
  • 举报
回复
在C++里,struct就是特殊的类,它所有的成员缺省的都是public访问权限
OenAuth.Net 2008-10-31
  • 打赏
  • 举报
回复
LZ的意思是??
假如...是类,那么下面这个是类吗???
晕,明明两个都是结构体嘛?

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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