标题:求助:在定义类的对象时,为什么在后面加了一个空括号就不对了呢?
只看楼主
千树
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
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册: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



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




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

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