首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未调用C++默认构造函数

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

Stack Overflow用户
提问于 2013-10-27 15:26:43
回答 2查看 12.3K关注 0票数 8

我对c++非常陌生,所以如果我忽略了一些简单的东西,请原谅。我有一个类圈子:

代码语言:javascript
复制
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);

};

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

代码语言:javascript
复制
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();
}

在我的main中,我尝试创建两个Circle,一个使用each构造函数,但是使用Circle()创建的Circle永远不会被创建。我无论如何也想不出为什么?没有错误消息或任何东西。

代码语言:javascript
复制
int main{
    Circle circle(a, 3.3);
    Circle c2();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-27 15:28:27

代码语言:javascript
复制
 Circle c2();

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

代码语言:javascript
复制
Circle c2;
票数 30
EN

Stack Overflow用户

发布于 2013-10-27 15:28:42

这里不是实例化,而是函数声明:

代码语言:javascript
复制
// parameter-less function c2, returns a Circle.
Circle c2();

你需要

代码语言:javascript
复制
Circle c2;

代码语言:javascript
复制
Circle c2{};  // requires c++11
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19615659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档