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也不能用{}赋初值了。
前一篇:C++中define用法