未调用 C++ 默认构造函数

标签 c++ class constructor

<分区>

我是 C++ 的新手,所以如果我忽略了一些简单的事情,请原谅我。我有一个类(class)圈子:

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);

};

我有两个构造函数,其中一个是我重载的默认构造函数:

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();
}

在我的主要部分中,我尝试使用 each 构造函数创建两个圆圈,但是使用 Circle() 创建的 Circle 永远不会被创建。我终生无法弄清楚为什么?没有错误消息或任何内容。

int main{
    Circle circle(a, 3.3);
    Circle c2();
}

最佳答案

 Circle c2();

不创建对象,它通过名称 c2 声明一个函数,该函数不带任何参数并返回一个 Circle 对象。如果你想创建一个对象,只需使用:

Circle c2;

关于未调用 C++ 默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19615659/

相关文章:

c++ - reinterpret_cast<unsigned long> 无效转换

c++ - 是否存在用于编辑 doxygen 评论的 "wiki"?

python - 四种方法的类文字游戏

javascript 如何获取父类构造函数参数

c++ - Qt 未定义对 3rdparty 软件库的引用

c++ - 加密时文件末尾出现奇怪的字符

java - 如何从另一个类调用方法?

c++ - 何时使用构造函数和析构函数,尤其是在容器和跨线程中

调用初始化方法的 Matlab 类构造函数

构造函数/函数重载签名查找时间复杂度?