#include #include using namespace std;

// 定义一个动物的类 class Animal { public: // 构造函数,给动物命名 Animal(string name) : name(name) {} // 虚函数,让子类可以覆盖重写 virtual void speak() { cout << 'I am an animal.' << endl; } // 定义一个友元函数,可以访问动物的私有成员变量 friend void printName(Animal& animal); protected: // 动物的名字,只能在类内部或者友元函数中访问 string name; };

// 定义一个狗的类,继承自动物类 class Dog : public Animal { public: // 构造函数,给狗命名 Dog(string name) : Animal(name) {} // 重写动物的虚函数,自定义狗的叫声 void speak() { cout << 'I am a dog.' << endl; } };

// 定义一个猫的类,继承自动物类 class Cat : public Animal { public: // 构造函数,给猫命名 Cat(string name) : Animal(name) {} // 重写动物的虚函数,自定义猫的叫声 void speak() { cout << 'I am a cat.' << endl; } };

// 定义一个友元函数,可以访问动物的私有成员变量 void printName(Animal& animal) { cout << 'My name is ' << animal.name << endl; }

// 主函数 int main() { // 创建一个指向狗的动物指针,命名为Buddy Animal* animal1 = new Dog('Buddy'); // 创建一个指向猫的动物指针,命名为Whiskers Animal* animal2 = new Cat('Whiskers'); // 让动物发出叫声 animal1->speak(); // 输出动物的名字 printName(*animal1); // 让动物发出叫声 animal2->speak(); // 输出动物的名字 printName(*animal2); // 释放动态分配的内存 delete animal1; delete animal2; return 0; }

C++面向对象编程示例:动物、狗、猫

原文地址: https://www.cveoy.top/t/topic/nQOl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录