求解c++中struct和class的区别

westdo 2005-03-15 11:39:01
求解struct和class的区别,看到c++中这两者没有太大的区别,为什么不把struct和class合并呢?如果不考虑到于c的兼容
...全文
661 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqulzg 2005-03-16
  • 打赏
  • 举报
回复
就是觉得在做链表的时候struct很方便
宋宝华 2005-03-16
  • 打赏
  • 举报
回复
区别1:
    struct 声明的类中成员变量默认为public
    class 声明的类中成员变量默认为private
细微区别:
struct也可以作为C语言中单纯的结构体用,如果里面一个函数都没有的话。而class则无论如何也是个类。考虑如下例子:
struct exp
{
int x;
int y;
};

int main()
{
struct exp a={1,2};
cout << a.x << a.y;
}
这个是成立的,输出12

class exp
{
int x;
int y;
};

int main()
{
class exp a={1,2};
cout << a.x << a.y;
}

则不成立了。这个区别很细微。

基本上就这些区别了。

usufu 2005-03-16
  • 打赏
  • 举报
回复
他们的默认情况不一样.
struct的默认类型是public

class的默认类型是private

ylc3895_cn 2005-03-16
  • 打赏
  • 举报
回复
定义类用class好吧。
the_mask_of_zorro 2005-03-16
  • 打赏
  • 举报
回复
struct内数据默认是public类型的,
class内数据默认是private类型的。
继续用struct是为了向下兼容啊,习惯问题,以后发展会只用class的
你可以
template<class T>
但是
template<struct T>
并不总是可以用的。
class中有个默认的this指针,struct没有
不同点:构造函数,析构函数 this 指针
error:struct仅仅能定义数据,而CLASS可以定义操作!
class exp
{
int x;
int y;
};

int main()
{
class exp a(1,2);
cout << a.x << a.y;
}

应该可以吧
idealpure 2005-03-16
  • 打赏
  • 举报
回复
struct内数据默认是public类型的,继续用struct是为了向下兼容,class内数据默认是private类型的。
zhousqy 2005-03-16
  • 打赏
  • 举报
回复
struct 声明的类中成员变量默认为public
class 声明的类中成员变量默认为private
guyaguya 2005-03-16
  • 打赏
  • 举报
回复
struct 声明的类中成员变量默认为public
class 声明的类中成员变量默认为private

struct虽然是为了与c兼容
但是c++中的struct和c中的struct有很大的不同
c中struct是不可以有构造函数的
而在c++中是可以的
C++中的struct其实和class差不多了
除了默认的成员访问权限
zeronecpp 2005-03-15
  • 打赏
  • 举报
回复
楼上正解,另外
《Inside The C++ Object Model》说如果不需要与C兼
容或传递参数给C程序,不要在C++中用struct。
无论在基类还是子类存取class的data member和非virtual function效率
和struct完全同,




cxyol 2005-03-15
  • 打赏
  • 举报
回复
构造函数,析构函数,继承,多态什么的在结构体都能用

1, 只是结构体成员变量和成员函数默认的是public类默认的是private。

2, 继承是不是也不一样, struct默认是public的, class默认是private的。
piaozi2003 2005-03-15
  • 打赏
  • 举报
回复
继续用struct是为了向下兼容啊,习惯问题,以后发展会只用class的。

-----------------------------------------------------------------

你太小看struct,也太高看class了吧!两者之间在效率上有很大差别!
Panic_1 2005-03-15
  • 打赏
  • 举报
回复
补充一点:
你可以
template<class T>
但是
template<struct T>
并不总是可以用的。
zwzzj 2005-03-15
  • 打赏
  • 举报
回复
C++里一般没人用 struct 了.
azhui3000 2005-03-15
  • 打赏
  • 举报
回复
struct内数据默认是public类型的,
class内数据默认是private类型的。
继续用struct是为了向下兼容啊,习惯问题,以后发展会只用class的。
llf_hust 2005-03-15
  • 打赏
  • 举报
回复
struct 声明的类中成员变量默认为public
class 声明的类中成员变量默认为private
hywhy 2005-03-15
  • 打赏
  • 举报
回复
struct仅仅能定义数据,而CLASS可以定义操作!
CMyMfc 2005-03-15
  • 打赏
  • 举报
回复
你问的没有意义
tokens 2005-03-15
  • 打赏
  • 举报
回复
就是考虑兼容啊..所以struct关键字留下来,
如果不兼容,你怎么在C++中编译C语言?
BL_01010 2005-03-15
  • 打赏
  • 举报
回复
我觉得C++里面struct和class除了默认的成员变量或函数类型不一样以外,其余的没什么区别···
可以看看《Thinking in C++ — The 2th Edition》,里面有讲的。
还有,C++编译器对待struct或class声明的类是一样的,this指针都会加进去的!

把class中都设置成public 就是一个STURCT;
whyglinux 2005-03-15
  • 打赏
  • 举报
回复
By definition, a struct is a class in which members are by default public; that is,

struct s { ...

is simply shorthand for

class s { public: ...

- Excerpted from the section "10.2.8 Structures and Classed" of "The C++ Programming Language" by Bjarne Stroustrup.
加载更多回复(13)

64,649

社区成员

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

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