C++中struct和class关键字的区别
来源:互联网 发布:易企秀官网mac 编辑:程序博客网 时间:2024/05/12 06:20
C++中struct和class关键字的区别
对于这个问题很多人会说:struct和class除了“默认的成员访问权限”这一点不同外,没有任何区别(P141,摘自《高质量程序设计指南C++/C语言》第3版,修订版),即struct里的默认的成员访问权限是public,而class则是private。
其实,仔细看看《C++ Primer》(第4版),在485页,写道:
“唯一的不同只是默认的成员保护级别和默认的派生保护级别,没有其他区别”。
很多人忽视了struct和class在默认派生访问权限的区别。
下面代码说明了struct和class在默认继承方式的不同。
class Base {public:int data;};class Private_Derived : Base {int test() {return data;}};// Use struct instead of classstruct Public_Derived : Base {int test() {return data;}};class Derived_From_Private : Private_Derived {int test() {// Error: can't access Base::datareturn data;}};class Derived_From_Public : Public_Derived {int test() {return data;}};
由于Private_Derived类将Base类的data的访问权限转成private后,所以Derived_From_Private类继承Private_Derived类,就使用不了data成员变量,编译会出错。
参考资料:
1、《C++ Primer》(第4版),P485- C++中struct和class关键字的区别
- C++中struct和class关键字的三个区别
- c++关键字struct和class的区别
- C#struct和class的区别
- [C#]class和struct的区别
- 【C++】class和struct的区别
- c#中struct和class的区别
- .NET中class和struct的区别
- .NET中class和struct的区别
- .NET中class和struct的区别。
- c#中struct和class的区别
- C++中struct和class的区别
- .net中class和struct的区别
- c#中struct和class的区别
- C++中struct 和 class 的区别
- .NET中class和struct的区别
- C#中struct和class的区别
- C++中struct和class的区别
- 未能找到类型或命名空间名称“DbSet”
- 鸡尾酒排序
- 【推荐】Andorid安全测试框架drozer
- POJ 1001-Exponentiation(NYOJ 155 求高精度幂):大数问题
- MapReduce计算模型--简单层次Top-Down细化
- C++中struct和class关键字的区别
- 知识点列举
- 记boost在gcc的一个库链接问题generic_category()
- 高效面试
- 常见的正则表达式
- 每日一题(59) - 把数组排成最小的数
- android图片处理方法(转载)
- 符号速率,码片速率,业务速率,信道编码,扩频因子
- C++中用函数返回值初始类对象时的一个问题