c++ struct和class

c++中对象通常用struct和class表示。

在c语言中,struct用来创建结构体,结构体中只能包含基本数据成员。

而在c++中struct能包含成员函数,能实现多态(继承)。

c++中struct和class的功能十分类似,但是在面向对象的过程中class的使用较多,两者的区别如下:

struct与class的主要区别在于默认权限方面:

class的成员默认权限为private,struct的成员默认权限为public。因此在主函数中可以直接通过stu1.m_name来访问到Student的成员变量。
class的继承默认是private继承,struct的继承默认是公有继承。

struct作为数据结构的实现体,它默认的数据访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的
除此之外,在模板的使用方面:

class可以作为一个关键字定义模板参数(与typename作用一样),而struct不可以
class和struct都可以使用模板。比如STL中的很多容器就用到了模板结构体。

c++11之后,union联合体也可以用有非POD类型的成员和静态成员函数,但是需注意:如果union的成员有非平凡默认构造/析构函数,那么union自己的默认构造函数和析构函数会被删除需要用户自己重新定义,而且union保证除了构造函数和析构函数里明确写出的,不会初始化或销毁任何成员。

 

参考文章

https://blog.csdn.net/Kallou/article/details/124476706?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-124476706-blog-50602648.235^v27^pc_relevant_3mothn_strategy_and_data_recovery&spm=1001.2101.3001.4242.1&utm_relevant_index=3

 

posted @ 2023-04-05 18:52  _Explosion!  阅读(31)  评论(0编辑  收藏  举报