【发布时间】:2011-08-23 11:16:49
【问题描述】:
编辑:这个问题出现了,我想我做得很好!去堆栈溢出!! :D
我要考试了,去年考试的一个问题是发现以下构造函数的实现问题并编写一个更正的构造函数。
Rectangle::Rectangle(string col, int len, int br)
{
setColour(col);
length =len;
breadth=br;
}
类定义如下:
class Polygon
{
public:
Polygon(string col="red");
void printDetails(); // prints colour only
virtual double getArea()=0;
void setColour(string col);
private:
string colour;
};
class Rectangle : public Polygon
{
public:
Rectangle(string, int, int);
void printDetails(); // prints colour and area
// for part 3, delete the line below
double getArea();
private:
int length;
int breadth;
};
我已经将代码写入编译器并且运行良好。我猜这个问题与继承有关,因为string colour; 是私有的,但setColour 是公开的,所以我无法弄清楚。除非它的Rectangle::Rectangle(string col, int len, int br):length(len), breadth(br) 然后在contrucor里面设置颜色什么的。
它只值 3 分,所以如果没有人愿意回答,这没什么大不了的,但我认为如果我要从事程序员的职业,尽可能多地了解我的兴趣。 ;)
感谢您的帮助。
PS,请参阅 Rectangle 中的 getArea()。当我删除它时,它告诉我它“无法实例化抽象类”。这是什么意思?
编辑:这是主要内容:
void main (void)
{
Rectangle rect1 ("blue",5,6);
Rectangle *prect2 = new Rectangle("red",5,6);
rect1.setColour("red");
rect1.printDetails();
prect2->printDetails();
}
【问题讨论】:
-
+1 表示诚实、深思熟虑的家庭作业问题。
-
我希望我的 C++ 课程能这么有趣。
-
这可能会有所帮助:stackoverflow.com/questions/270917/…
标签: c++ constructor