c++ 类被认为是抽象类但没有虚拟纯方法的问题

cnh2zyt3  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(196)

我对抽象类有问题。我已经声明了两个类Valeur(抽象类)和Boolleen
Valeur...

  1. #pragma once
  2. #include <memory>
  3. namespace common {
  4. class Valeur {
  5. public:
  6. virtual bool operator==(Valeur const& v) const =0;
  7. };
  8. class Boolleen : public Valeur {
  9. private:
  10. bool _b;
  11. public:
  12. Boolleen (bool b);
  13. bool operator==(Valeur const& v);
  14. };
  15. }

Valeur.cpp

  1. #include "valeur.h"
  2. using namespace common;
  3. Boolleen::Boolleen(bool b): Valeur(), _b(b) {}
  4. bool Boolleen::operator==(Valeur const& v) {
  5. return true;
  6. }

main.cpp

  1. #include "valeur.h"
  2. int main()
  3. {
  4. common::Boolleen b(true); // DOESN'T WORK ???
  5. return 0;
  6. }

当我尝试示例化Boolleen类时,编译器告诉我它是一个抽象类,但我没有在Boolleen中声明纯虚方法。我希望能够毫无顾虑地构建Boolleen对象

yduiuuwa

yduiuuwa1#

您没有实现Boolleen::operator==(const Valeur &v) const,因此它是一个抽象类,因为有一个方法仍然是纯虚的(Valeur的相等运算符)。注意签名:)
为了避免将来出现这样的错误,无论何时你打算重写一个虚方法,都要在声明之后加上override。这样,如果重写的方法具有不正确的签名,编译器将不允许您编译代码。

相关问题