哪个类不能拥有纯虚拟/抽象类以外的对象?

时间:2014-09-07 09:23:40

标签: c++

我搜索过但找不到答案。

我的问题是我们不能创建一个抽象类的对象,

class Shape{
   public:
      virtual void area()=0;
       }


int main(){
    Shape obj // error
    }

如何创建简单/具体类来在创建对象时给出错误而不使其抽象化?

如何使这个具体类在创建对象时给出错误

 class Shape{
   public:
      void area(){}; //without making it pure virtual
       }

 int main(){
    Shape obj // when we create object, it should give error
    }

我确信它可以完成,但我不知道该怎么做。

是否有其他类无法拥有对象或在创建对象时出错?

1 个答案:

答案 0 :(得分:3)

其中一种可能性是使对象构造函数受到保护。喜欢这个

class Shape{
protected:
   Shape(){}//Only derived classes or friends can call this
public:
   void area(){}
};
class DShape:public Shape{
public:
   DShape(){}
};
int main(){
    Shape obj; // error: ‘Shape::Shape()’ is protected
    DShape obj2;//compiles fine
}