网站建设与维护新的体会,公众号的运营地区,黄骅港赶海推荐个好地方,视频制作软件app手机版免费版C继承的定义
两个类的继承关系在派生类中声明#xff0c;派生类定义使用以下语法#xff1a; class DerivedClass: [ACCESS] BaseClass{ /…/ }; 冒号#xff08;:#xff09;后的[ACCESS]是继承的最高权限级别符#xff0c;可以是以下三个值#xff08;存取权限级别继承的定义
两个类的继承关系在派生类中声明派生类定义使用以下语法 class DerivedClass: [ACCESS] BaseClass{ /…/ }; 冒号:后的[ACCESS]是继承的最高权限级别符可以是以下三个值存取权限级别的其中之一 public公共权限三级高 protected保护权限二级 private私有权限一级低 由[ACCESS]的这三个值从而引出了C继承的三种方式 1、公共继承[ACCESS]是public 2、保护继承[ACCESS]是protected 3、私有继承[ACCESS]是private 首先明确一点基类BaseClass的private成员在派生类DerivedClass中是无法访问即不能被继承。
最高权限级别符[ACCESS]
最高权限级别符[ACCESS]的意思是 在派生类DerivedClass中继承自基类BaseClass的成员的级别高于[ACCESS]级别的都将被视为[ACCESS]级别等于、低于[ACCESS]级别的原样不动。基类BaseClass的private成员不被继承。
C继承的三种方式详解如下
一、公共继承[ACCESS]是public
[ACCESS]为public时基类BaseClass的成员级别在派生类DerivedClass中都不变即public的继续是public、protected的继续是protectedprivate不被继承。
二、保护继承[ACCESS]是protected
[ACCESS]为protected时在派生类DerivedClass中基类BaseClass的成员级别是public的修改为protected原来是protected的继续是protectedprivate不被继承。
三、私有继承[ACCESS]是private
[ACCESS]为private时在派生类DerivedClass中基类BaseClass的成员级别是public和protected的都修改为private基类BaseClass的private成员不被继承。
实例源码
源码中注释内容有错误两字时表示此行会发生编译错误将对应行前的注释删除再编译即可重现错误。 D:\YcjWork\CppTourvim c2006.cpp
#include iostream
using namespace std;/*** 类继承的3种方式
*/// 基类
class Base {
public:int pub;
protected:int prot;
private:int priv;
};// 公有继承
class PublicDerived : public Base {
public:void test() {pub 1; // 正确Base的public成员prot 1; // 正确Base的protected成员继承为protected// priv 1; // 错误Base的private成员不可访问}
};// 保护继承
class ProtectedDerived : protected Base {
public:void test() {pub 1; // 正确Base的public成员变为protectedprot 1; // 正确Base的protected成员保持为protected// priv 1; // 错误Base的private成员不可访问}
};// 私有继承
class PrivateDerived : private Base {
public:void test() {pub 1; // 正确Base的public成员变为privateprot 1; // 正确Base的protected成员变为private// priv 1; // 错误Base的private成员仍不可访问}
};int main() {PublicDerived pub_derived;PrivateDerived priv_derived;ProtectedDerived prot_derived;// 测试基类的访问权限pub_derived.pub 2; // 正确PublicDerived的public成员// prot_derived.pub 1; // 错误ProtectedDerived的protected基类成员不可访问// priv_derived.pub 1; // 错误PrivateDerived的private基类成员不可访问cout pub_derived.pub: pub_derived.pub endl;//cout prot_derived.pub: prot_derived.pub endl; // 错误ProtectedDerived的protected基类成员不可访问//cout priv_derived.pub: priv_derived.pub endl; // 错误PrivateDerived的private基类成员不可访问return 0;
}编译运行
D:\YcjWork\CppTourgpp c2006D:\YcjWork\CppTourg c2006.cpp -o c2006.exeD:\YcjWork\CppTourc2006
pub_derived.pub: 2D:\YcjWork\CppTour运行截屏
全文完