打印
[牛人杂谈]

C++的继承属性,你觉得这个属性可靠吗?

[复制链接]
796|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yiyigirl2014|  楼主 | 2024-2-19 17:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在C++中,继承是一种面向对象编程的重要概念,允许你创建一个新的类(子类或派生类),从一个或多个现有类(基类或父类)中继承属性和行为。子类可以访问和使用基类中的非私有成员(成员变量和成员函数),并且可以添加新的成员和方法。这种机制可以促进代码重用和扩展。
#include <iostream>
#include <string>

// 基类
class Person {
protected: // 可以被派生类访问,但不能被外部访问
    std::string name;

public:
    Person(const std::string &n) : name(n) {}

    void display() {
        std::cout << "Name: " << name << std::endl;
    }
};

// 派生类
class Student : public Person {
private:
    int studentID;

public:
    Student(const std::string &n, int id) : Person(n), studentID(id) {}

    void display() { // 重写基类的display函数
        std::cout << "Student Name: " << name << std::endl;
        std::cout << "Student ID: " << studentID << std::endl;
    }
};

int main() {
    Person person("Alice");
    person.display(); // 输出:Name: Alice

    Student student("Bob", 12345);
    student.display(); // 输出:Student Name: Bob Student ID: 12345

    return 0;
}
在这个例子中,Person 是基类,Student 是派生类。Student 类继承了 Person 类的 name 属性,并添加了一个新的属性 studentID。派生类中的 display() 函数重写了基类中的 display() 函数,使得 Student 对象可以调用自己的版本。

继承允许代码重用,通过扩展现有的类来创建新的类,并且可以实现多态性,从而提高了代码的灵活性和可维护性。


使用特权

评论回复
沙发
yiyigirl2014|  楼主 | 2024-2-19 17:22 | 只看该作者
继承虽然好用,但是继承会导致代码难以维护,所以Linux目前不接受C++代码据说就是因为这个原因,在修改基类的时候会影响到派生类,我也觉得这个特性虽然有,但是不建议过多使用,甚至不要使用。

使用特权

评论回复
板凳
yiyigirl2014|  楼主 | 2024-2-19 17:24 | 只看该作者
Linus Torvalds,Linux 内核的创始人,对 Linux 内核不使用 C++ 的主要反对理由并非仅仅是因为 C++ 的派生特性。尽管 C++ 的派生特性可能是其中之一,但更多的原因与 C++ 本身的设计和特性以及 Linux 内核的需求相关。

下面是一些可能影响他反对 Linux 内核使用 C++ 的因素:

C++ 的复杂性: 相对于 C 语言而言,C++ 更加复杂。C++ 引入了更多的概念和特性,如面向对象编程、模板、异常处理等,这增加了代码的复杂性和难以理解性。Linux 内核是一个庞大的项目,需要简洁和高效的代码来确保可靠性和性能。

C++ 的运行时开销: C++ 相比 C 语言可能会引入更多的运行时开销。例如,C++ 中的虚函数和 RTTI(Run-Time Type Information)等功能可能会增加代码大小和执行时间,而 Linux 内核对性能的要求非常高。

兼容性和可移植性: C++ 的标准库可能不够适用于嵌入式系统和操作系统内核等特殊领域。使用 C++ 可能会导致更多的兼容性和可移植性问题,使得 Linux 内核在各种硬件平台上的移植变得更加困难。

社区和历史原因: Linux 内核最初是用 C 语言编写的,且已经建立了庞大的社区和代码库。在这种情况下,转向 C++ 可能需要大量的重写和重新设计,这可能会带来许多挑战和争议。

需要指出的是,虽然 Linux 内核主要使用 C 语言编写,但仍然可以在用户空间中使用 C++ 来开发应用程序和工具。在实际的 Linux 生态系统中,许多应用程序和工具都是使用 C++ 开发的,但 Linux 内核本身保持了使用 C 的传统。

使用特权

评论回复
地板
alxd| | 2024-3-6 12:49 | 只看该作者
C++中的继承属性是一种强大的特性,它允许子类(派生类)继承父类(基类)的成员变量和成员函数,并且可以通过访问控制符来控制继承的可见性

使用特权

评论回复
5
Betty996| | 2024-3-6 14:02 | 只看该作者
继承属性在合适的情况下是可靠的,但也需要谨慎使用和设计

使用特权

评论回复
6
Belle1257| | 2024-3-6 15:11 | 只看该作者
继承属性可以促进代码复用,通过将通用的属性和行为定义在基类中,派生类可以继承并重用这些代码,从而减少重复编写相似代码的工作量

使用特权

评论回复
7
Allison8859| | 2024-3-6 16:19 | 只看该作者
这种集成是实现多态性的基础,通过虚函数和纯虚函数的机制,可以实现运行时的多态行为,提高代码的灵活性和可扩展性

使用特权

评论回复
8
Emily999| | 2024-3-6 17:24 | 只看该作者
过度的继承可能导致类之间的耦合性增加,使得代码难以维护和理解

使用特权

评论回复
9
Carmen7| | 2024-3-6 18:33 | 只看该作者
设计时需要遵循“合成复用原则”(Composition Over Inheritance),并且避免过度的层次化继承结构

使用特权

评论回复
10
Annie556| | 2024-3-6 19:45 | 只看该作者
C++中的访问控制符(public、protected、private)可以控制继承的可见性,但需要注意合理使用,以确保派生类对基类的访问权限符合设计意图

使用特权

评论回复
11
Charlene沙| | 2024-3-7 08:20 | 只看该作者
过深的继承链可能导致代码的复杂性增加,降低代码的可读性和可维护性。因此,在设计时需要考虑继承链的深度和结构

使用特权

评论回复
12
B1lanche| | 2024-3-7 09:32 | 只看该作者
感觉我就用的C++的最简单的语法了,就复杂的都很少用到

使用特权

评论回复
13
Carina卡| | 2024-3-7 11:08 | 只看该作者
总的来说,C++的继承属性是可靠的,但需要在设计和使用时谨慎考虑,遵循良好的面向对象设计原则,以确保代码的可维护性、可扩展性和可读性

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

213

主题

3536

帖子

10

粉丝