#include <iostream> using namespace std; class Pet {public: virtual void speak() { cout<<"how does a pet speak?\n"; } }; class Cat: public Pet {public: void speak() { cout<<"miao~~!miao~~!\n"; } }; class Dog: public Pet {public: void speak() { cout<<"wang~~!wang~~!\n"; } }; int main() { Pet *p1,*p2,obj; Dog dog1; Cat cat1; obj=dog1; obj.speak(); p1=&cat1; p1->speak(); p2=new Dog; p2->speak(); return 0; }
时间: 2024-03-04 21:53:53 浏览: 11
这段代码定义了一个Pet类,其中包含虚函数speak(),Cat和Dog类均继承自Pet类,并重写了speak()函数。在main函数中,定义了Pet指针p1和p2,以及Pet对象obj、Dog对象dog1和Cat对象cat1。将dog1赋值给obj后,调用obj的speak()函数,会输出"wang~~!wang~~!"。将cat1的地址赋给p1后,通过p1调用speak()函数,会输出"miao~~!miao~~!"。通过new运算符动态分配了一个Dog对象,并将其地址赋给p2,通过p2调用speak()函数,同样会输出"wang~~!wang~~!"。最后释放了p2指向的动态分配的内存。
相关问题
c++头文件#include <iostream> #include <algorithm> #include <deque> using namespace std;如何修改成C语言可运行代码
C 头文件指的是 C 语言中用于引入函数、宏等定义的文件。在编写 C 语言程序时,我们可以直接编写函数和宏的定义,但是这样会让程序变得复杂,难以维护。因此,我们可以将常用的函数、宏等定义保存在头文件中,然后在代码中引用头文件即可使用其中的定义。C 标准库中也提供了许多头文件,如 <stdio.h>、<stdlib.h> 等。头文件通常使用 .h 后缀名,被包含在源程序中的形式为 #include "XXX.h"。
#include<iostream> using namespace std; class Car { char* pName; int id; int m; public: Car(string name) { } };
在这段代码中,我们定义了一个名为 Car 的类,它有三个私有成员变量:pName(指向 char 类型的指针)、id 和 m。在构造函数中,我们可以看到只有一个字符串参数 name,但是没有实际的初始化操作,这会导致代码无法编译通过。你需要补充构造函数的实现来初始化 pName 字符串指针。此外,你也需要确定其他成员变量的初始化方式以确保代码的正确性。