C++程序分析过程及结果

3.classnumber{private:intval;public:number(inti){val=i;}operatorint(){returnval;}};cl... 3. class number
{
private:
int val;
public:
number(int i)
{val=i;}
operator int()
{return val;}
};
class num:public number
{public:
num(int i):number(i)
{}
};
void main()
{
num n(55);
int i=n;
cout<<"int 做了重载"<<i+n<<endl;
}

被里面两个INT绞不懂了~~~重载运算符可以这么用吗?请教大家了~~
在线等....

-------------------
能把整个程序注释一下并输出结果吗?这种题我老是搞不懂~~但却是想学会啊~~先谢谢了
展开
 我来答
huifeng00
2010-01-06 · TA获得超过5235个赞
知道大有可为答主
回答量:808
采纳率:0%
帮助的人:711万
展开全部
operator int()
{return val;}
它是转换操作符,它是一种特殊的类成员函数。它定义将类类型值,转变为其他类型值的转换。它必须在类定义体内声明。
它也叫转换函数。它采用如下通用形式:
operator type();
主要这里的type表示类型名,例如可以是int,long,float等,当然也可以是其他类类型。
注意:转换函数必须是成员函数,它不能指定返回类型,并且形参表必须为空。
operator type();格式就是这样的,没有返回类型,形参为空。
它虽然没有返回类型,但是函数体内要返回一个type类型。

例如你写的
operator int()
{return val;}

你的主程序中有两个地方要用到转换函数。
1,int i=n;
这用到了。
2,i+n表达式计算中也要用到n转换为int类型与i作加法运算。

以前给别人说过类似的,所以知道点,希望对楼主有帮助。
补充回答:程序注释
#include <iostream>
using namespace std;
class number
{
private:
int val;
public:
number(int i)//这是单个参数的构造函数
{val=i;}
operator int()//这是将类转换为int的转换函数
{return val;}
};
class num:public number//public继承number,也会继承基类中的转换函数。
{public:
num(int i):number(i)//这是构造函数中初始化列表
{}
};
void main()
{
num n(55);//定义一个num类
int i=n;//将类转换为int给i,i=55;
cout<<"int 做了重载"<<i+n<<endl;//输出结果,结果为110,i=55,n转换为int为55.
}
就这样啦啦啦啦
2010-01-06 · 超过11用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:32.9万
展开全部
operator int()
{return val;}
这叫做“类型转换函数”,在需要的时候,可以把number类对象转为int类型。
int i=n;这句,右边期望得到一个int型,但是它是num型,编译器查找是否有类型转换函数可以转为int,是有的(继承父类的),于是调用完成转换int型,赋值;

number(int i)
{val=i;}
这个是 单参构造函数,也具有类型转换功能。它是把int型转化为number类型。与上面的类型转换函数(把number或其子类类型转为int)相反。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式