c++ - 为什么纯虚机制不考虑继承函数?

标签 c++ inheritance pure-virtual

问之前,我引用了这个older question .但我仍有疑问。

struct B1 {
  virtual void fun () = 0;
};
struct B2 {
  void fun () { cout<<"B2::fun()\n"; }
  void fun (int i) {}
};
struct D : B1, B2 {
  using B2::fun;  // This line doesn't help
};

int main ()
{
  B1 *pB1 = new D;  // Error: cannot allocate 'D' because 'B1::fun()' is abstract
  pB1->fun();
}
  1. C++ 标准不接受继承成员函数来解决纯虚拟机制的任何原因?
  2. 为什么使用 关键字无助于解决此错误? (编译器:linux-64 g++)
  3. 哪个函数用于 using 关键字,B2::fun()B2::fun(int)? (该行没有歧义)

最佳答案

using B2::fun;

只允许您使用 B2::fun 方法,但是由于 B1 是一个抽象类,您必须实现 该类的纯虚函数乐趣能够创建其对象。

关于c++ - 为什么纯虚机制不考虑继承函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5617043/

相关文章:

c++ - 如何强制所有派生类实现虚方法?

c++ - 抽象类可以在 C++11 中有构造函数和私有(private)成员吗

C++继承设计问题

c++ - 隐式转换为左值引用

C++ 运算符 -> 在复数情况下

c++ - VC11 Winsock 应用程序不会关闭

swift - 在 swift 中覆盖受限扩展方法的推荐方法,避免消息 "Ambiguous use of ' xxx'"

java - 将值传递给 super 构造函数时无法从静态上下文访问字段

c++ - 错误 C2259 : "Derived" cannot instantiate abstract class

c++ - 为什么这让我得到一个指向 const 对象字段的非常量指针?