C++虚类之不可实例化
2023-12-21 17:53:11
C++中虚类不可以实例化
#include <iostream>
#include <string>
using namespace std;
class Pet {
string name;
public:
Pet(string p = " ") { name = p; }
string getName() const { return name; }
virtual void call() const = 0; //在这里指定虚函数
};
class Dog : public Pet{
public:
Dog(string n) : Pet(n) {}
void call() const { cout<< "*汪汪叫*" << " "; }
};
class Cat : public Pet{
public:
Cat(string n) : Pet(n) {}
void call() const { cout << "*喵喵叫*" << " "; }
};
void f(Pet *p) {
p->call();
}
int main() {
//Pet pet0("#"); //(1)
Dog pet1("*"); //(2)
Cat pet2("$"); //(3)
f(&pet1); //(4)
cout << endl;
f(&pet2); //(5)
return 0;
}
注意!类Pet包含纯虚函数,是一个虚基类,不能直接实例化,因此注释(1)错误;
(2)和(3)中Dog和Cat是派生类,实例化没有问题;
(4)和(5)可以将派生类对象指针转换为指针使用,没问题。
将(1)注释后输出结果:
文章来源:https://blog.csdn.net/qq_43818724/article/details/135054111
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!