标题:请教一个点运算符方面的报错。
只看楼主
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
Circle::Circle(int x=0, int y=0, double r=10)
我发现把这个构造函数里面的参数缺省值全部去掉之后,Circle MyCircle;就可以通过编译了。请问各位有没有人能说一下是怎么回事?本来是调用不带参的构造函数,但编译能不能通过又跟三个参数的构造函数相关,听起来好诡异啊。
2015-01-22 21:17
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:14 
简化一下如何?

程序代码:
#include<iostream>

using namespace std;

class point                   
{
public:
    void setpos(int m, int n){x=m;y=n;}
    int getx(){return x;}
    int gety(){return y;}
private:
    int x; int y;
};
class circle :public point    
{
public:
    circle();
    ~circle(){};
};
circle::circle()
{
    setpos(100,10);
}

void main()
{
    circle mycircle;
    cout<<"获得初始坐标:"<<mycircle.getx()<<","<<mycircle.gety()<<endl;
    mycircle.setpos(15,25);
    cout<<"获得更改坐标:"<<mycircle.getx()<<","<<mycircle.gety()<<endl;

}

DO IT YOURSELF !
2015-01-23 09:46
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
谢谢关注。不重载构造函数倒确实没问题。也许是因为先前我的第三个重载构造函数所有参数都给了缺省值,编译器认为这种情况和缺省掉参数是一样的,因此报错。
2015-01-24 13:16
ITCD
Rank: 2
等 级:论坛游民
威 望:2
帖 子:16
专家分:18
注 册:2012-11-26
得分:0 
回复 11楼 yangfrancis
原因很简单,类是用来复用代码的,你在构造里面就往内存丢东西,这个相信C++的老爹不答应
2015-01-25 16:38
ITCD
Rank: 2
等 级:论坛游民
威 望:2
帖 子:16
专家分:18
注 册:2012-11-26
得分:0 
回复 11楼 yangfrancis
另外你的代码可读性应该优化下,一步能解决的,就不要绕几大圈子。
2015-01-25 16:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-441368-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.750378 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved