#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 15:53:12 浏览: 117
这段代码主要演示了虚函数的作用和多态的实现。
在 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; 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;
}
#include <iostream> using namespace std; class CException { /********** Begin **********/ /********** End ***********/ }; void fn1() { throw CException(); } int main() { try { fn1(); } catch (CException& ce) { ce.Reason(); } return 0; }填写代码
代码如下:
```c++
#include <iostream>
using namespace std;
class CException {
public:
void Reason() {
cout << "Exception caught!" << endl;
}
};
void fn1() {
throw CException();
}
int main() {
try {
fn1();
} catch (CException& ce) {
ce.Reason();
}
return 0;
}
```
阅读全文