【问题标题】:c++ pure virtual functionc++纯虚函数
【发布时间】:2015-05-20 18:12:55
【问题描述】:

如果我有一个具有一个纯虚函数的类,那么所有函数都必须是纯虚函数吗?

#pragma once

class Shape {
    private:
        static int countShape;
    public:
        virtual float perimeter() const=0;
        virtual float area() const=0;
        virtual void print();
        virtual void input();
        void setCountShape();
        int getCountShape()const{return countShape;};
        Shape(void);
        ~Shape(void);
};

我尝试运行我的程序,它写了消息:

Error   3   error LNK2001: unresolved external symbol "public: virtual void __thiscall Shape::input(void)" (?input@Shape@@UAEXXZ)   
Error   1   error LNK2001: unresolved external symbol "public: virtual void __thiscall Shape::print(void)" (?print@Shape@@UAEXXZ)

【问题讨论】:

标签: c++ function pure-virtual


【解决方案1】:

回答您提出的具体问题:不。仅仅因为您有一个纯虚函数,并不意味着任何其他函数也必须是纯虚函数。该类可以有任意数量的纯虚拟、“常规”虚拟、非虚拟和静态成员函数。

尽管正如其他人所指出的,您遇到的错误与虚拟函数无关。

【讨论】:

    【解决方案2】:

    除非您将它们标记为纯虚拟,否则您需要实现虚拟功能。

    如果一个类包含多个纯虚函数,那么它就是抽象的;它不能被实例化。

    【讨论】:

      猜你喜欢
      • 2020-08-21
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 2012-08-27
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      相关资源
      最近更新 更多