| 派 生 方 式 | 基类的public成员 | 基类的protected成员 | 基类的private成员 |
| public派生 | 还是public成员 | 变为protected成员 | 不可见 |
| protected派生 | 变成protected成员 | 还是protected成员 | 不可见 |
| private派生 | 变为private成员 | 变成private成员 | 不可见 |
#include <iostream>
class Base {
public:
int public_a;
virtual void test() = 0;
protected:
int protected_a;
private:
int private_a;
};
//公有继承
class PublicDerived : public Base {
public:
virtual void test() {
public_a = 1; //public_a public继承后还是public类型
protected_a = 2; //protected_a 还是protected类型
//private_a = 3; //派生类不可访问基类私有成员
}
};
//保护继承
class ProtectedDerived : protected Base {
public:
virtual void test() {
public_a = 1; //public_a protected继承后变为protected类型
protected_a = 2; //protected_a 还是protected类型
//private_a = 3; //派生类不可访问基类私有成员
}
};
//私有继承
class PrivateDerived : private Base {
public:
virtual void test() {
public_a = 1; //public_a private继承后变为private类型
protected_a = 2; //protected_a private继承后变为private类型
//private_a = 3; //派生类不可访问基类私有成员
}
};
#include <iostream>
class Person {
public:
Person(){};
void eat() {std::cout << "eat\n";}
};
//公有继承
class PublicStudent : public Person {
public:
PublicStudent() {}
void study() {std::cout << "study\n";}
};
//保护继承
class ProtectedStudent : protected Person {
public:
ProtectedStudent() {}
void study() {std::cout << "study\n";}
};
//私有继承
class PrivateStudent : private Person {
public:
PrivateStudent() {}
void study() {std::cout << "study\n";}
};
void func_test(Person &p) {
p.eat();
}
int main() {
PublicStudent public_s;
ProtectedStudent protected_s;
PrivateStudent private_s;
func_test(public_s); //正确,公有继承时,派生类可以做基类的所有事情
func_test(protected_s); //出错,保护继承时,派生类不能做基类的所有事情
func_test(private_s); //出错,私有继承时,派生类不可以做基类的所有事情
system("pause");
return 0;
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有