Mic*_*eJS 8 c++ constructor class
我是c +的新手,如果我忽略了一些简单的东西,请原谅我.我有一个班级圈:
class Circle: public Shape{
protected:
//string name;
Point focus;
float radius;
private:
public:
virtual void calculateArea();
virtual void calculatePerimeter();
Circle();
Circle(Point p, float r);
Run Code Online (Sandbox Code Playgroud)
};
我有两个构造函数,其中一个是我重载的默认值:
Circle::Circle()
{
Point p(1,1);
focus = p;
radius = 10;
name = "Circle";
calculatePerimeter();
calculateArea();
cout<<"default circle"<<endl;
}
Circle::Circle(Point p, float r)
{
focus = p;
radius = r;
name = "Circle";
calculatePerimeter();
calculateArea();
}
Run Code Online (Sandbox Code Playgroud)
在我的主要部分中,我尝试使用每个构造函数创建两个圆圈,但是使用Circle()创建的圆圈永远不会被创建.我不能为我的生活搞清楚为什么?没有错误消息或任何内容.
int main{
Circle circle(a, 3.3);
Circle c2();
}
Run Code Online (Sandbox Code Playgroud)
Alo*_*ave 25
Circle c2();
Run Code Online (Sandbox Code Playgroud)
不创建对象,它按名称声明一个函数,c2
该函数不带参数并返回一个Circle
对象.如果要创建对象,只需使用:
Circle c2;
Run Code Online (Sandbox Code Playgroud)
这不是实例化,而是函数声明:
// parameter-less function c2, returns a Circle.
Circle c2();
Run Code Online (Sandbox Code Playgroud)
你需要
Circle c2;
Run Code Online (Sandbox Code Playgroud)
要么
Circle c2{}; // requires c++11
Run Code Online (Sandbox Code Playgroud)