亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C++ 函数重写详解:实战示例与最佳实践

C++ 函数重写详解

本指南通过清晰示例、最佳实践与分步演示,深度剖析 C++ 函数重写机制,助你编写生产级多态代码。

为什么函数重写很重要

面向对象编程中,继承让派生类扩展或修改基类行为。当基类与派生类声明同名同参数成员函数时,派生类实现会重写基类版本。通过派生类对象调用该函数,执行的是重写后的版本。


示例 1:基础重写

#include <iostream>
using namespace std;

class Base {
public:
    void print() {
        cout << "Base Function" << endl;
    }
};

class Derived : public Base {
public:
    void print() {
        cout << "Derived Function" << endl;
    }
};

int main() {
    Derived d;
    d.print();
    return 0;
}

输出

Derived Function

对 Derived 实例调用 print() 执行的是重写版本,而非基类版本。

C++ 函数重写详解:实战示例与最佳实践

若创建 Base 对象调用 print(),则执行基类原始实现:

Base b;
b.print(); // 输出: Base Function

访问被重写的基类函数

有时需要显式调用基类版本。两种常用技巧:

示例 2:作用域解析调用基类函数

#include <iostream>
using namespace std;

class Base {
public:
    void print() { cout << "Base Function" << endl; }
};

class Derived : public Base {
public:
    void print() { cout << "Derived Function" << endl; }
};

int main() {
    Derived d1, d2;
    d1.print();
    d2.Base::print();  // 显式调用 Base::print
    return 0;
}

输出

Derived Function
Base Function

示例 3:在派生类内部调用基类函数

#include <iostream>
using namespace std;

class Base {
public:
    void print() { cout << "Base Function" << endl; }
};

class Derived : public Base {
public:
    void print() {
        cout << "Derived Function" << endl;
        Base::print();  // 调用基类版本
    }
};

int main() {
    Derived d;
    d.print();
    return 0;
}

输出

Derived Function
Base Function

示例 4:使用基类指针访问基类函数(非虚函数情况)

#include <iostream>
using namespace std;

class Base {
public:
    void print() { cout << "Base Function" << endl; }
};

class Derived : public Base {
public:
    void print() { cout << "Derived Function" << endl; }
};

int main() {
    Derived d;
    Base* ptr = &d;  // 基类指针指向派生对象
    ptr->print();    // 因非 virtual,调用 Base::print
    return 0;
}

输出

Base Function

函数未声明 virtual 时,基类指针调用基类实现。要实现真正多态,需在基类声明 virtual 并在派生类重写。


这些示例阐释了 C++ 函数重写的核心机制。掌握这些概念,你能编写更清晰、可维护、有效利用多态的代码。

C语言

  1. 掌握 C++ 运算符:六大类型全解析与实战示例
  2. C++ 注释最佳实践:编写可读、可维护代码的注释艺术
  3. C++数组传递给函数实战指南
  4. C++ 友元函数与友元类:突破访问控制的利器
  5. C++ 函数详解:从声明到调用的实战指南
  6. C 语言函数详解:定义、声明、调用与参数传递
  7. C++编程语言:核心特性全景解析
  8. C++常量与字面量完全手册:类型、语法与最佳实践
  9. C++运算符大全:算术/关系/逻辑/位/赋值/杂项与优先级结合性
  10. C++数值类型实战指南:基本类型、数学函数与随机数生成
  11. C++重载机制深度解析:函数重载与运算符重载全攻略
  12. C++多态实战指南:虚函数、动态绑定与纯虚函数