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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现