【发布时间】:2022-01-14 09:41:37
【问题描述】:
我最近开始学习 OOP。如果这是一个菜鸟问题,请原谅我。我的问题是, 我认为 new 关键字仅用于相同的数据类型,例如:
char* p = new char; // OR
int* myArr = new int[i] //etc...
在研究继承和虚函数时,我遇到了这个问题:
#include <iostream>
using namespace std;
class Human {
public:
virtual void className() {
cout << "Human" << endl;
}
};
class Asian : public Human {
public:
void className() {
cout << "Asian" << endl;
}
};
int main() {
Human* h1 = new Asian();
h1->className();
}
在main函数中,我们用基类初始化指针,然后new关键字后面有派生类?这两种数据类型代表什么,我应该如何使用它们?
【问题讨论】:
-
在 C++ 中,多态性是通过指针和引用完成的。通常是对基类的指针或引用,它实际上可以引用派生类对象。
virtual成员函数使用对象的虚函数表分派(这是如何发生的,是编译器实现的细节,不能以任何可移植方式以编程方式访问)。 -
在c++中,你可以创建一个抽象类(Human)。然后您创建了一个亚洲对象(新亚洲返回一个亚洲指针)。由于继承,您可以进行分配。
标签: c++ oop inheritance new-operator