C++类的组合和类的继承的区别

C++类的组合和类的继承的区别

类的组合:

类的组合是一种将一个类的对象作为另一个类的成员变量的设计方式。

class Engine {
public:
Engine() { /* ... */ }
~Engine() { /* ... */ }
};
class Car {
private:
Engine engine; // Engine的构造函数和析构函数将被调用
public:
Car() {
// Engine的构造函数在此处被调用
}
~Car() {
// 当Car对象销毁时,Engine的析构函数首先被调用
}
};

类的继承:

类的继承的子类是派生类,可以拥有父类的全部属性。

#include <iostream>
#include <string>
// 基类:Animal
class Animal {
protected:
std::string name;
public:
// 基类的构造函数
Animal(const std::string& animalName) : name(animalName) {}
// 基类的虚析构函数
virtual ~Animal() {
std::cout << name << " is being destroyed." << std::endl;
}
// 一个简单的打印信息的成员函数
virtual void speak() const {
std::cout << name << " makes a sound." << std::endl;
}
};
// 子类:Dog,继承自 Animal
class Dog : public Animal {
private:
std::string breed;
public:
// Dog类的构造函数
Dog(const std::string& dogName, const std::string& dogBreed)
: Animal(dogName), breed(dogBreed) {}
// 重写基类的 speak 函数
void speak() const override {
std::cout << name << " barks." << std::endl;
}
// Dog类特有的成员函数
void showBreed() const {
std::cout << name << " is a " << breed << "." << std::endl;
}
};
int main() {
Dog myDog("Buddy", "Golden Retriever");
// 访问Dog类特有的函数
myDog.showBreed();
// 访问从Animal类继承来的speak函数
myDog.speak();
return 0;
}
posted @   周半仙  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示