相关疑难解决方法(0)

要求虚函数覆盖使用override关键字

添加override了C++ 11 以确保您编写的要覆盖基类虚函数的成员函数实际上(或不会编译).

但是在大型对象层次结构中,有时您可能会意外地编写一个成员函数,当您不想要它时会覆盖基类虚拟!例如:

struct A {
    virtual void foo() { }  // because obviously every class has foo().
};

struct B : A { ... };

class C : B {
private:
    void foo() {
        // was intended to be a private function local to C
        // not intended to override A::foo(), but now does
    }
};
Run Code Online (Sandbox Code Playgroud)

是否有一些编译器标志/扩展名至少会发出警告C::foo?为了便于阅读和正确,我只想强制所有覆盖使用override.

c++ virtual gcc overriding c++11

42
推荐指数
3
解决办法
1万
查看次数

派生类中的虚拟限定符

虚拟限定符到基类的虚函数,在派生类中有什么区别?

class b
{
   public:
   virtual void foo(){}
};

class d : public b
{
  public:
  void foo(){ .... }
};
Run Code Online (Sandbox Code Playgroud)

要么

class d : public b
{
  public:
  virtual void foo(){ .... }
}; 
Run Code Online (Sandbox Code Playgroud)

这两个声明有什么不同,除了它让d的孩子知道foo()的虚拟性?

c++

5
推荐指数
2
解决办法
505
查看次数

c ++密封和接口

我注意到C++中有密封和接口关键字.这仅适用于CLR C++吗?如果没有,什么时候密封和接口添加到C++标准?它们在C++中的含义与它们在C#中的含义相同吗?如果没有,我如何获得标准C++中的等价物?

c++-cli sealed

4
推荐指数
2
解决办法
4084
查看次数

是否应该在所有继承级别或仅在祖先级别声明虚拟函数?

在任何级别的后代类中,显式标记为虚拟是否都会覆盖?

class Base {
// ...
protected:
  virtual void to_be_derived() const; // First level to introduce this virtual function
};

class LevelOne : public Base {
// ...
protected:
 // virtual??
 void to_be_derived() const;
};

class LevelTwo : public levelOne {
// ...
protected:
 // virtual??
 void to_be_derived() const;
};
Run Code Online (Sandbox Code Playgroud)

我没有看到Prefixing虚拟关键字覆盖了我的问题的覆盖方法.特别是,其中一个答案已更新,以反映c ++ 11的当前用法,特别override是我不知道的关键字!

编辑:我宁愿接受关于post-c ++ 11代码的链接问题的另一个答案.

c++ virtual inheritance c++11

1
推荐指数
1
解决办法
401
查看次数

标签 统计

c++ ×3

c++11 ×2

virtual ×2

c++-cli ×1

gcc ×1

inheritance ×1

overriding ×1

sealed ×1