| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1765 人关注过本帖
标题:[求助]C++中类与结构的区别
只看楼主 加入收藏
逸凡
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-4-10
收藏
 问题点数:0 回复次数:13 
[求助]C++中类与结构的区别
各位大虾,我是一个C++初学者,看到类和对象这一章时,弄不明白类和结构有什么区别。书上说结构集合了数据,而类集合了数据和函数,比机构功能更强大。但我把类换成结构,发现在结构中也能包括函数成员,因此有点迷糊。希望各位大虾不吝赐教,谢谢!!!
搜索更多相关主题的帖子: 结构 函数 
2006-09-22 08:46
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
在C++中没什么区别。唯一的一点是:struct中的变量被默认为public的,而class中默认为private的。但只要你在struct或private里写的public,protected,private关键字之后就没区别了。

http://myajax95./
2006-09-22 09:08
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
类支持"继承性", 这个特性结构是没有的. 就是因为这个"继承性"它还有更强的"多态性".

=×&D o I p R e E n C g T l X&×=
2006-09-22 09:39
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 

加一些补充
在模版中,类型参数前面可以使用class或typename,如果使用struct,则含义不同,struct后面跟的是“non-type template parameter”,而class或typename后面跟的是类型参数。
class和struct如果定义了构造函数的话,都不能用大括号进行初始化

  如果没有定义构造函数,struct可以用大括号初始化。

  如果没有定义构造函数,且所有成员变量全是public的话,可以用大括号初始化。
《转》


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-09-22 09:56
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
以下是引用踏魔狼在2006-9-22 9:39:48的发言:
类支持"继承性", 这个特性结构是没有的. 就是因为这个"继承性"它还有更强的"多态性".

struct 和 class 都支持继承性,这点上没有区别。试一下下面的程序就知道了。
struct Base
{
public:
virtual void print() {cout << "Base" << endl;}
};

struct Derived : public Base
{
virtual void print() {cout << "Derived" << endl;}
};

int main(int argc, char* argv[])
{
Derived d;
Base *pb = &d;

pb->print();

return 0;
}


http://myajax95./
2006-09-22 11:39
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
以下是引用song4在2006-9-22 9:56:50的发言:

加一些补充
在模版中,类型参数前面可以使用class或typename,如果使用struct,则含义不同,struct后面跟的是“non-type template parameter”,而class或typename后面跟的是类型参数。
class和struct如果定义了构造函数的话,都不能用大括号进行初始化

  如果没有定义构造函数,struct可以用大括号初始化。

  如果没有定义构造函数,且所有成员变量全是public的话,可以用大括号初始化。
《转》

可以用大括号括起来的叫aggragate type。无论class还是struct都可以。条件是没有base class,没有子定义constructor,没有virtual function,没有private和protected成员。


http://myajax95./
2006-09-22 11:52
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 

我以前从来没有用结构来继承. 它还真的用.


=×&D o I p R e E n C g T l X&×=
2006-09-22 12:09
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
但它的继承限制已经没有效了.

=×&D o I p R e E n C g T l X&×=
2006-09-22 12:18
majia775
Rank: 1
等 级:新手上路
威 望:2
帖 子:94
专家分:0
注 册:2006-9-11
收藏
得分:0 
在C++中,结构是简单的"类",以后开发的时候,还是用类比较多,一般C++书籍都把结构的放在前面讲,让读者先熟悉一下,这样对于后来学习类有帮助,结构和类是兄弟.

我不是随便的人,我随便起来不是人.... http://majia775.
2006-09-22 13:22
lundon
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2006-5-7
收藏
得分:0 
学习学习


还想好好学习
2006-09-24 21:59
快速回复:[求助]C++中类与结构的区别
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029858 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved