| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 630 人关注过本帖
标题:求助:在定义类的对象时,为什么在后面加了一个空括号就不对了呢?
只看楼主 加入收藏
千树
Rank: 1
等 级:新手上路
帖 子:62
专家分:1
注 册:2013-11-4
结帖率:100%
收藏
已结贴  问题点数:3 回复次数:2 
求助:在定义类的对象时,为什么在后面加了一个空括号就不对了呢?
不加括号的代码:
#include<iostream>
using namespace std;
class FS
{
private:
float sb;
float xb;
public:
FS()
{
}
FS (float i,float j)
{
sb=i;
xb=j;
}
FS operator + (FS one )
{
return (FS(sb+one.sb,xb=one.xb));
}
void show()
{
cout<<sb<<'\t'<<xb<<"i"<<endl;
}
};


void main()
{
FS one(1.2,3.5);
FS two(2.4,-1.1);
FS three;
three = one +two;
three.show();
}
加了括号后的代码:
#include<iostream>
using namespace std;
class FS
{
private:
float sb;
float xb;
public:
FS()
{
}
FS (float i,float j)
{
sb=i;
xb=j;
}
FS operator + (FS one )
{
return (FS(sb+one.sb,xb=one.xb));
}
void show()
{
cout<<sb<<'\t'<<xb<<"i"<<endl;
}
};


void main()
{
FS one(1.2,3.5);
FS two(2.4,-1.1);
FS three(); //加了一个空括号
three = one +two;
three.show();
}
报错为:
F:\C++\10.cpp(32) : error C2659: '=' : overloaded function as left operand
F:\C++\10.cpp(33) : error C2228: left of '.show' must have class/struct/union type
搜索更多相关主题的帖子: private include public return 
2014-04-24 10:40
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:3 
一大堆代码,谁有时间去给你找不同呀?!
我用 Beyond Compare 比较了一下你两段的差异,才找到不同点在哪里。

你应该这么问:
对于
class foo { …… };

int main()
{
    foo a;
   
    foo a();
    有什么不同
}

别人就会告诉你,foo a 是定义了一个名叫a的foo类型的变量;而 foo a() 是声明了一个名叫a的函数,此函数参数列表为void,返回类型为foo。
2014-04-24 11:02
千树
Rank: 1
等 级:新手上路
帖 子:62
专家分:1
注 册:2013-11-4
收藏
得分:0 
回复 2 楼 rjsp
恩,知道了,下次注意
2014-04-24 12:57
快速回复:求助:在定义类的对象时,为什么在后面加了一个空括号就不对了呢?
数据加载中...
 
   



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

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