| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1008 人关注过本帖
标题:请教一个点运算符方面的报错。
只看楼主 加入收藏
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: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册: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
快速回复:请教一个点运算符方面的报错。
数据加载中...
 
   



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

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