返回值如果想要传值而不是传引用或指针是不是无法做到多态?

那应该怎么解决值传递返回值的问题?

class A{//抽象类
public:
    virtual void foo() = 0;
};
class B{
public:
    A getA();
};

错误 1 error C2259: “A”: 不能实例化抽象类

阅读 3.3k
3 个回答

这个好像和多态关系不大,主要是你想要实例化一个纯虚类,这是非法的
你有一个A::foo()=0表明A是一个纯虚类,但又写了A getA()返回了一个对象,即A的实例,那显然不行啊

A是一个抽象类,是不允许被实例化的,也就是说,A类不会有对象。B类中的getA()方法,返回的是一个A的对象,这就违背了“不允许被实例化”的原则

1 抽象类不能实例化,所以编译器报error;
2 使用对象而不是引用或指针的话,无法实现多态效果;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题