struct与class的区别

    C++中的struct是对C中struct的扩充,它已经不再只是一个包含不同数据类型的数据结构,因为其扩充了太多功能。总的来说,C++中struct和class极其相似,比如,struct能包含成员函数、能继承、能实现多态等。但是二者之间也存在着不可忽视的区别,如下:

1) 默认的继承访问权限不同。struct默认是public继承,class默认是private继承。

    子类属于哪种继承取决于子类而不是基类,也就是说struct可以继承class,class也可以继承struct,默认的继承访问权限就取决于子类是struct还是class。如果不想使用默认的继承方式,可以指明使用哪种继承。如下:

struct A{};

class B : A{}; //private继承

struct C : B{}; //public继承


2) struct作为数据结构的实现体,它默认的数据访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的。  

    虽然struct和class使用时基本可以互换,但是还是应该用struct处理更像数据结构的场景,用class处理更像对象的场景。


3) class关键字还用于定义模板参数,但是struct不用于定义模板参数


4) struct在定义时,如果内部没有构造函数和虚函数,可以用{}赋初值(用初始化列表对数据进行按顺序的初始化),而class不能这样初始化,除非使用和struct一样的public继承。这里struct体现出数据结构的特性,而不是类的特性。如果struct内部有构造函数或虚函数,那么就无法使用{}赋初值,这时struct表现得更像class。


参考文献:

      1> C++中struct和class的区别

      2> C++中struct和class的区别

原文链接: https://www.cnblogs.com/Lilu-1226/p/10776581.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    struct与class的区别

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/294206

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 下午3:40
下一篇 2023年2月15日 下午3:40

相关推荐