具有纯虚函数的父类的指针数组和指针数组的对象类型
Posted
技术标签:
【中文标题】具有纯虚函数的父类的指针数组和指针数组的对象类型【英文标题】:pointer array of parent class having a pure virtual function and object type of pointer array 【发布时间】:2019-11-27 19:29:46 【问题描述】:在主函数中,我想创建一个指针数组。对象类型应该每次都改变。 像这样的东西。 shape* a[10]=新矩形; 但我想制作一个 [0] 矩形类型。 a[1] 圆形等。
class shape
public:
virtual float boundary_length()=0;
;
class rectangle: public shape
public:
float boundary_length()
cout<<"Boundary length of rectangle"<<endl;
return 2*(length+width);
;
class circle: public shape
public:
float boundary_length()
return 2*(3.14*radius);
;
class triangle: public shape
float boundary_length()
return (base+perp+hyp);
;
int main()
shape* a=new rectangle;
return 0;
【问题讨论】:
【参考方案1】:如果我的理解正确,您需要类似以下内容
#include <iostream>
class shape
public:
virtual float boundary_length() const = 0;
virtual ~shape() = default;
;
class rectangle: public shape
public:
rectangle( float length, float width ) : length( length ), width( width )
float boundary_length() const override
return 2*(length+width);
protected:
float length, width;
;
class circle: public shape
public:
circle( float radius ) : radius( radius )
float boundary_length() const override
return 2*(3.14*radius);
private:
float radius;
;
//...
int main(void)
const size_t N = 10;
shape * a[N] =
new rectangle( 10.0f, 10.0f ), new circle( 5.0f )
;
for ( auto s = a; *s != nullptr; ++s )
std::cout << ( *s )->boundary_length() << '\n';
for ( auto s = a; *s != nullptr; ++s )
delete *s;
程序输出是
40
31.4
【讨论】:
以上是关于具有纯虚函数的父类的指针数组和指针数组的对象类型的主要内容,如果未能解决你的问题,请参考以下文章