我搜索过但找不到答案。
我的问题是我们不能创建一个抽象类的对象,
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
}
我确信它可以完成,但我不知道该怎么做。
是否有其他类无法拥有对象或在创建对象时出错?
答案 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
}