掘金 人工智能 08月19日
C++——类的继承
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

C++ 中的类继承机制允许一个新类(派生类)基于现有类(基类)构建,从而实现代码的复用和功能的扩展。派生类能够继承基类中所有非私有的成员,包括公有和保护成员。然而,基类的私有成员在派生类中是无法直接访问的。继承还支持函数重写,允许派生类重新定义基类中同名函数,以实现特定的功能覆盖。在访问权限方面,`public` 继承保持基类成员原有权限,而 `private` 继承则将所有基类成员变为私有。`protected` 关键字允许成员在类内部及派生类中访问,而 `private` 成员仅限于类内部访问。此外,`final` 关键字可用于阻止类被继承或阻止虚函数被重写,确保代码的稳定性和安全性。

🌟 继承实现代码复用与扩展:派生类(子类)可以继承基类(父类)的非私有成员,从而避免重复编写代码,并在此基础上增加新功能或修改现有功能。

🔒 访问权限的继承规则:子类可以访问父类的公有(public)和保护(protected)成员,但父类的私有(private)成员在子类中不可直接访问。`public` 继承保留父类成员原有的访问权限,而 `private` 继承会将所有父类成员的访问权限设为私有。

🔄 函数重写与 `final` 关键字:派生类可以定义与基类同名的函数来实现功能重写。`final` 关键字可以用于修饰类,阻止其被进一步继承;也可以用于修饰虚函数,阻止该函数在派生类中被重写,从而保证特定实现的稳定性。

🛡️ `protected` 关键字的作用:`protected` 成员的访问权限介于 `public` 和 `private` 之间,它们可以在类内部以及所有派生类中被访问,这对于构建具有层次结构的类非常有用,如示例中 `Dog` 类可以访问 `Animal` 类的 `protected` 成员 `age`。

类的继承

继承是一个新类(派生类)基于现有类(基类),实现代码复用和扩展。

// 基类class Animal {public:    string name;    Animal(string n) : name(n) {}    void eat() { cout << name << " is eating." << endl; }};// 派生类class Bird : public Animal {public:    int wingspan;    Bird(string n, int w) : Animal(n), wingspan(w) {}    void fly() { cout << name << " is flying." << endl; }};int main() {    Bird sparrow("Sparrow", 20);    sparrow.eat();  // 调用基类的成员函数    sparrow.fly();  // 调用派生类的成员函数    return 0;}

要点:

protected 访问权限

public 关键字用于定义共有的成员,这些成员能在任何地方访问,不局限于内部。(江山)protected 关键字用于定义受保护的成员,这些成员只能在类内部和派生类中访问。(玉玺)private 关键字用于定义私有成员,这些成员只能在类内部访问。(皇后)

class Animal {protected:    int age;};class Dog : public Animal {public:    void setAge(int a) { age = a; } // 可以访问 protected 成员};int main() {    Dog myDog;    // myDog.age = 5;  // 错误,无法直接访问 protected 成员    myDog.setAge(5);     return 0;}

final 阻止继承

final 关键字可以用于阻止类被继承,或者阻止虚函数被重写。

class Shape {public:    virtual void draw() = 0;};class Circle : public Shape {public:    void draw() final { /* 实现 */ }  // final 阻止该函数被重写};//class SubCircle : public Circle { ... };  // 错误,Circle 类被 final 修饰,无法被继承

要点:


Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

C++继承 面向对象编程 派生类 基类 代码复用
相关文章