好久没来过了。。问个简单的问题。

xiazaihrl 2011-05-07 10:07:35
问一个()的重载

#include <iostream>
using namespace std;
class Pt
{
public:
float x,y,z;

Pt &operator ()(float a,float b,float c)
{
x=a;
y=b;
z=c;
return *this;
}

};
int main()
{

Pt s;
Pt b=s.operator()(3,4,5); //这个没什么问题
Pt c=(Pt)(3,4,5); //我想要的是这样写。。。类似CRect(1,1,100,100)这种可以实现吗? 这里是错的
return 0;
}
...全文
100 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiazaihrl 2011-05-07
  • 打赏
  • 举报
回复
()重载是既可以 强转换 或者 其他...赋值
xiazaihrl 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 maoxing63570 的回复:]
Pt c=Pt(3,4,5); //先调用构造函数,然后调用拷贝函数
[/Quote]
en ...看来是变成 =号了。。都一样。。
maoxing63570 2011-05-07
  • 打赏
  • 举报
回复
Pt c=Pt(3,4,5); //先调用构造函数,然后调用拷贝函数
maoxing63570 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xiazaihrl 的回复:]
这样就对了。。看似和那构造函数还是有点微妙的关系...
解释下?
[/Quote]
在这里他没有用转换了,而是调用构造函数生成临时的对象,然后再调用拷贝函数
xiazaihrl 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kid_coder 的回复:]
C/C++ code

#include <iostream>
using namespace std;
class Pt
{
public:
float x,y,z;
Pt(){}//
Pt(float a,float b,float c)//
{
x=a;
y=b;
z=c;
}……
[/Quote]
这样就对了。。看似和那构造函数还是有点微妙的关系...
解释下?
KID_coder 2011-05-07
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
class Pt
{
public:
float x,y,z;
Pt(){}//
Pt(float a,float b,float c)//
{
x=a;
y=b;
z=c;
}
Pt &operator ()(float a,float b,float c)
{
x=a;
y=b;
z=c;
return *this;
}

};
int main()
{

Pt s;
Pt b=s.operator()(3,4,5); //这个没什么问题
Pt c=Pt(3,4,5); //我想要的是这样写。。。类似CRect(1,1,100,100)这种可以实现吗? 这里是错的
return 0;
}
xiazaihrl 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 maoxing63570 的回复:]
Pt c=s(3,4,5);
[/Quote]
额,这样应该可以, 但我要那种写法 得怎么重载?
maoxing63570 2011-05-07
  • 打赏
  • 举报
回复
Pt c=s(3,4,5);

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧