加载中…
个人资料
裴大帅2020
裴大帅2020
  • 博客等级:
  • 博客积分:0
  • 博客访问:697,185
  • 关注人气:63
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

C++中Struct也可以继承

(2020-10-25 23:25:53)
分类: IT技术
本文参考:https://blog.csdn.net/coco_1998_2/article/details/108293737

C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。
struct能包含成员函数!
struct能继承!
struct能实现多态!

struct和class的区别?最本质的一个区别就是默认的访问控制,体现在两个方面:
1)默认的继承访问权限。struct是public的,class是private的。
对于如下代码:
struct A{
char a;
};

struct B : A{
char b;
};

这个时候B是public继承A的。如果都将上面的struct改成class,那么B是private继承A的。

另外,struct可以继承class,同样class也可以继承struct。到底默认是public继承还是private继承,取决于子类而不是基类。即,默认的继承访问是看子类到底是用的struct还是class。比如:
struct A{};
class B : A{}; // private继承
struct C : B{}; // public继承

2)struct作为数据结构的实现体,它默认的数据访问控制是public的;而class作为对象的实现体,它默认的成员变量访问控制是private的。
struct是一种数据结构的实现体,虽然它是可以像class一样的用。struct里的变量叫数据,class内的变量叫成员,虽然它们并无区别。
到底使用class还是struct:如果要做的更像是一种数据结构的话,那么用struct;如果要做的更像是一种对象的话,那么用class。

struct和class的其他区别
1)class这个关键字还用于定义模板的参数,就像typename,但关键字struct不用于定义模板参数
2)struct可以在定义的时候用{}赋初值,而class不行;如果struct中也包含了构造函数,那么struct也不能用{}赋初值了。



0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有