【C++继承的基本概念】

1、继承的基本概念
继承是C++面向对象编程的三大核心特性之一(继承、封装、多态),它允许我们基于现有类创建新类。

2、继承的语法
// 基本语法
class BaseClass {
// 基类成员
};
class DerivedClass : access-specifier BaseClass {
// 成员定义
};
// access-specifier 可以是:public, protected, private

3、三种继承方式
继承方式对比表格
继承方式 基类public成员 基类protected成员 基类private成员
public继承 在派生类中保持public 在派生类中保持protected 不可访问
protected继承 在派生类中变为protected 在派生类中保持protected 不可访问
private继承 在派生类中变为private 在派生类中变为private 不可访问

4、举例说明
#include
using namespace std;

// 基类
class Base {
public:
int publicVar;
protected:
int protectedVar;
private:
int privateVar;

public:
Base() : publicVar(1), protectedVar(2), privateVar(3) {}

void show() {
    cout << "Base: public=" << publicVar 
         << ", protected=" << protectedVar 
         << ", private=" << privateVar << endl;
}

};

// 1. public继承
class PublicDerived : public Base {
public:
void test() {
publicVar = 10; // 保持public
protectedVar = 20; // 保持protected
// privateVar = 30; // 不能访问
cout << “PublicDerived: publicVar=” << publicVar
<< “, protectedVar=” << protectedVar << endl;
}
};

// 2. protected继承
class ProtectedDerived : protected Base {
public:
void test() {
publicVar = 100; // 变为protected
protectedVar = 200; // 保持protected
// privateVar = 300; // 不能访问
cout << “ProtectedDerived: publicVar=” << publicVar
<< “, protectedVar=” << protectedVar << endl;
}

// 可以使用using重新公开基类成员
using Base::show;
using Base::publicVar;  // 将publicVar重新公开

};

// 3. private继承
class PrivateDerived : private Base {
public:
void test() {
publicVar = 1000; // 变为private
protectedVar = 2000; // 变为private
// privateVar = 3000; // 不能访问
cout << “PrivateDerived: publicVar=” << publicVar
<< “, protectedVar=” << protectedVar << endl;
}
using Base::show;
using Base::publicVar;
};

void testInheritanceTypes() {
PublicDerived pubDerived;
cout << "PublicDerived: " << pubDerived.publicVar << endl; // 可访问
pubDerived.show(); // 可访问
pubDerived.test();

ProtectedDerived protDerived;
// cout << protDerived.publicVar << endl;  // 不能直接访问
protDerived.show();  // using使其可访问
protDerived.test();

PrivateDerived privDerived;
// cout << privDerived.publicVar << endl;  // 不能直接访问
privDerived.show();  // using使其可访问
privDerived.test();

}

int main() {
testInheritanceTypes();
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papership

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值