#include<iostream> using namespace std; class ClassA{ public: //**********found********** virtual void print( ) // 说明print函数为虚函数 { cout<<"ClassA"<<endl; } }; class ClassB:public ClassA{ public: void print( ) { cout<<"ClassB"<<endl; } }; //**********found********** void func(ClassA &t) { t.print(); } int main() { ClassA testa; ClassB testb; func(testa); func(testb); //**********found********** ClassA* p; // 定义指针p p=&testa; p->print(); //**********found********** p=&testb; p->print(); system("pause"); return 0; }请解释这个代码
时间: 2023-07-18 19:53:12 浏览: 39
这段代码主要演示了虚函数的作用和多态的实现。
在 ClassA 类中声明了一个虚函数 print(),表示该函数可以被子类重写。在 ClassB 类中重写了 print() 函数,输出 "ClassB"。在 func() 函数中,参数为一个 ClassA 类的引用,通过该引用调用 print() 函数,由于 ClassB 是 ClassA 的子类,所以传递 ClassB 的对象时会调用 ClassB 中的 print() 函数,输出 "ClassB"。
在 main() 函数中,先创建了 ClassA 和 ClassB 的对象 testa 和 testb,分别调用 func() 函数,输出 "ClassA" 和 "ClassB"。然后定义了一个指向 ClassA 类对象的指针 p,并分别将其指向 testa 和 testb,调用 p->print() 函数,由于 p 指向的对象不同,因此输出结果也不同,分别输出 "ClassA" 和 "ClassB"。
这就是多态的实现,同一个函数在不同的对象上有不同的表现形式。
相关问题
#include<iostream> using namespace std; int main(int argc, char *argv[]) { return 0; }
这是一个简单的 C++ 程序,它的作用是输出一个整数 0 并返回给操作系统。其中:
- #include<iostream> 是 C++ 的头文件,它包含了输入输出流的定义。
- using namespace std; 声明使用 std 命名空间,这样我们就可以直接使用 std 中的函数和对象。
- int main(int argc, char *argv[]) 是程序的主函数,它接受两个参数:argc 表示命令行参数的数量,argv 是一个指向字符指针的指针,它存储了这些参数的值。
- return 0; 是程序的返回值,它表示程序执行完毕并成功返回。
#include <iostream> using namespace std; class StInfo Begin//在此处声明StInfo类 End ********* ********* Begin *********| //在此处定义StInfo类
#include <iostream>
using namespace std;
class StInfo {
public:
string name;
int age;
string major;
void displayInfo() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Major: " << major << endl;
}
};
int main() {
StInfo student; // 创建一个StInfo类的对象
student.name = "John";
student.age = 20;
student.major = "Computer Science";
student.displayInfo(); // 调用StInfo类的displayInfo()函数显示学生信息
return 0;
}