C++ class和struct到底有什么区别详解
C++中保留了C语言的struct关键字,并且加以扩充。在C语言中,struct只能包含成员变量,不能包含成员函数。而在C++中,struct类似于class,既可以包含成员变量,又可以包含成员函数。
C++中的struct和class基本是通用的,唯有几个细节不同:
- 使用class时,类中的成员默认都是private属性的;而使用struct时,结构体中的成员默认都是public属性的。
- class继承默认是private继承,而struct继承默认是public继承。
- class可以使用模板,而struct不能。
C++没有抛弃C语言中的struct关键字,其意义就在于给C语言程序开发人员有一个归属感,并且能让C++编译器兼容以前用C语言开发出来的项目。
在编写C++代码时,我强烈建议使用class来定义类,而使用struct来定义结构体,这样做语义更加明确。
使用struct来定义类的一个反面教材:
#includeusingnamespacestd; structStudent{ Student(char*name,intage,floatscore); voidshow(); char*m_name; intm_age; floatm_score; }; Student::Student(char*name,intage,floatscore):m_name(name),m_age(age),m_score(score){} voidStudent::show(){ cout< show(); return0; }
运行结果:
小明的年龄是15,成绩是92.5
李华的年龄是16,成绩是96
这段代码可以通过编译,说明struct默认的成员都是public属性的,否则不能通过对象访问成员函数。如果将struct关键字替换为class,那么就会编译报错。
到此这篇关于C++class和struct到底有什么区别详解的文章就介绍到这了,更多相关C++classstruct内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!