c语言编程笔录

您现在的位置是:首页 > 编程 > 编程经验

编程经验

C++中的派生机制是什么

林玟书 2023-08-04编程经验
派生机制在C++中,派生是面向对象编程中的一种重要机制,它允许我们使用已经存在的类作为基础,构建新的类。派生类继承了基类的数据成员和成员函数,同时还可以添加自己的数据成员和成员函数。通过派生机制,我们可

派生机制

在C++中,派生是面向对象编程中的一种重要机制,它允许我们使用已经存在的类作为基础,构建新的类。派生类继承了基类的数据成员和成员函数,同时还可以添加自己的数据成员和成员函数。通过派生机制,我们可以实现代码的复用和层次化的设计。派生分为公有派生、私有派生和保护派生,其中公有派生是最常用的形式,它代表派生类的对象可以被外界访问,并且继承了基类的公有成员。

公有派生

公有派生是C++中派生的默认形式,使用public关键字来声明。公有派生继承基类的公有成员和受保护成员,但不会继承基类的私有成员。在公有派生中,基类的公有成员在派生类对象中仍然是公有成员,可以被外界访问。派生类也可以添加自己的成员函数和数据成员。下面是一个公有派生的示例:

class Shape {
public:
    void display() {
        cout << "This is a shape." << endl;
    }
};

class Circle : public Shape {
public:
    void displayArea() {
        cout << "The area of the circle is 3.14." << endl;
    }
};

int main() {
    Circle c;
    c.display(); // 调用基类的成员函数
    c.displayArea(); // 调用派生类的成员函数
    return 0;
}

私有派生

私有派生是一种派生形式,使用private关键字来声明。私有派生继承基类的公有成员和受保护成员,但它们在派生类中都变为私有成员,无法直接被外界访问。私有派生用于实现对基类成员的封装,使得只有派生类内部可以访问基类的成员。下面是一个私有派生的示例:

class Animal {
private:
    void sleep() {
        cout << "Zzzz..." << endl;
    }
};

class Cat : private Animal {
public:
    void sleepWithSound() {
        cout << "The cat is sleeping with purring sound." << endl;
        sleep(); // 调用基类的私有成员函数
    }
};

int main() {
    Cat c;
    c.sleepWithSound(); // 调用派生类的成员函数
    return 0;
}

保护派生

保护派生是一种派生形式,使用protected关键字来声明。保护派生继承基类的公有成员和受保护成员,它们在派生类中都变为保护成员,可以被派生类的成员函数和派生类的对象访问,但无法被外界访问。保护派生用于实现对基类成员的封装,使得派生类和其派生类可以访问基类的成员。下面是一个保护派生的示例:

class Plant {
protected:
    void grow() {
        cout << "The plant is growing." << endl;
    }
};

class Flower : protected Plant {
public:
    void bloom() {
        cout << "The flower is blooming." << endl;
        grow(); // 调用基类的保护成员函数
    }
};

int main() {
    Flower f;
    f.bloom(); // 调用派生类的成员函数
    return 0;
}

总结

派生是C++中面向对象编程的重要机制,通过派生可以从已有的类构建新的类,实现代码的复用和层次化的设计。派生分为公有派生、私有派生和保护派生三种形式,分别使用public、private和protected关键字进行声明。公有派生是最常用的形式,它继承基类的公有成员,并可以添加自己的成员函数和数据成员。私有派生将基类的公有成员和受保护成员变为私有成员,只能在派生类内部访问。保护派生将基类的公有成员和受保护成员变为保护成员,可以在派生类及其派生类内部访问,但外界无法访问。掌握派生机制,可以更好地进行代码的设计和组织。

文章评论