结构体与类有什么区别?

barry301 2006-08-29 10:00:47
求教:
结构体与类有什么区别?小弟刚学c++,请赐教!先谢了!
...全文
3497 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuhx 2006-10-29
  • 打赏
  • 举报
回复
C++中的struct在一般情况下,和c中的struct的内存布局是一样的
包括默认构造函数之类的,如果用不着,编译器不会给你生成的
justrun2005 2006-10-29
  • 打赏
  • 举报
回复
还有,c++中的struct内存布局尽量保留c风格。
OOPhaisky 2006-10-29
  • 打赏
  • 举报
回复
支持一楼的说法
alecshanhao 2006-10-29
  • 打赏
  • 举报
回复
哈哈
whatsblog 2006-10-28
  • 打赏
  • 举报
回复
mark
晨星 2006-09-11
  • 打赏
  • 举报
回复
于是甘草爽了,做编译器的苦了。
变量传递,异常抛出,模板实例化……总之各种情况下都得对struct和class区分对待。。

究竟怎么使用struct,是不是以完全兼容C的方式使用,应该完全是程序员自己的权利,自己的选择,何必一律定死呢?当一件事已经“可以”,何必再去“强制”呢?

这就像法律的制定,法律完全“允许”人们在国土上最大限度的自由行动,但却不会“强制”你每天都必须在各个省份之间蹿来蹿去,停一刻便要杀头。。。^0^
healer_kx 2006-09-11
  • 打赏
  • 举报
回复
建议把struct搞成C的struct,
不要让它们基本相等了。
Virtualsoft 2006-09-11
  • 打赏
  • 举报
回复
同意楼上滴
lotomer 2006-09-11
  • 打赏
  • 举报
回复
c++中的class和struct的唯一区别只在默认成员访问权限不同(包括默认继承权限)
class默认private,struct默认public;
daocaoren0 2006-09-11
  • 打赏
  • 举报
回复
楼上的,你是用什么编译的啊?
你能运行该程序?
majcos 2006-09-11
  • 打赏
  • 举报
回复
>在C++中只有两点区别:
>(1)class中默认的成员访问权限是private的,而struct中则是public的。
>(2)从class继承默认是private继承,而从struct继承默认是public继承。
>除此这外无任何区别。
>
>当然C中的struct跟C++中的struct的区别就大了去了。。。

从class继承默认是private继承,而从struct继承默认是public继承。
这句话似乎不妥,看如下代码:
class T1
{
public:
void f()
{
cout<<"T1::f()"<<endl;
}
int x,y;
};

struct T2
{
int x;
void f(){cout<<"T2::f()"<<endl;}
};


struct TT1 : T1
{
};

class TT2 : T2
{

};

int main()
{
TT1 t1;
TT2 t2;
t1.f();
t2.f();
}
晨星 2006-09-11
  • 打赏
  • 举报
回复
哦,可能想的不是很对头。
编译器已经有能力区分POD和非POD的,不管是struct还是class,都可以是POD类型。
不过嘛,既便将struct都统一视为与的POD class等同,结果搞得struct里有个string字段都不行,感觉还是挺变态的。。。。
xsm 2006-09-02
  • 打赏
  • 举报
回复
在C#里面的区别是,结构不能声明一个无参数的构造器,也不能对字段进行初始化。并且,他不能被继承,声明了一个结构,它就是终点(结构是通常是独立存在的,但它是继承自OBJECT基类的)。而类正好与这些相反。
perfervid 2006-09-02
  • 打赏
  • 举报
回复
http://www.coderlife.cn/
wxc2006 2006-09-02
  • 打赏
  • 举报
回复
牛, 真牛, 第一天学C++就应该在书上看到答案的这么一个问题, 引来这么多人激动的回帖.
sinkileu 2006-09-02
  • 打赏
  • 举报
回复
C++中它们的唯一区别就是默认为private还是public了.
我啃 2006-09-02
  • 打赏
  • 举报
回复
恩!好贴,结了我做FAQ
晨星 2006-08-31
  • 打赏
  • 举报
回复
都可以,只有C语言的结构体中才不可以定义成员函数。当然,C语言的结构体中不可以有的东西还多着呢。
菠萝丝炒鸡蛋 2006-08-31
  • 打赏
  • 举报
回复
好像是结构体中不能定义成员函数,类可以,^_^ ,我是采鸟,刚刚学习~~
晨星 2006-08-30
  • 打赏
  • 举报
回复
算我说错了好了,并非“没有意义”,只是,实在写不下了。
加载更多回复(17)

65,213

社区成员

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

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