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绞不懂了~~~重载运算符可以这么用吗?请教大家了~~
在线等....
-------------------
能把整个程序注释一下并输出结果吗?这种题我老是搞不懂~~但却是想学会啊~~先谢谢了 展开
{
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绞不懂了~~~重载运算符可以这么用吗?请教大家了~~
在线等....
-------------------
能把整个程序注释一下并输出结果吗?这种题我老是搞不懂~~但却是想学会啊~~先谢谢了 展开
2个回答
展开全部
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.
}
{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.
}
展开全部
operator int()
{return val;}
这叫做“类型转换函数”,在需要的时候,可以把number类对象转为int类型。
int i=n;这句,右边期望得到一个int型,但是它是num型,编译器查找是否有类型转换函数可以转为int,是有的(继承父类的),于是调用完成转换int型,赋值;
number(int i)
{val=i;}
这个是 单参构造函数,也具有类型转换功能。它是把int型转化为number类型。与上面的类型转换函数(把number或其子类类型转为int)相反。
{return val;}
这叫做“类型转换函数”,在需要的时候,可以把number类对象转为int类型。
int i=n;这句,右边期望得到一个int型,但是它是num型,编译器查找是否有类型转换函数可以转为int,是有的(继承父类的),于是调用完成转换int型,赋值;
number(int i)
{val=i;}
这个是 单参构造函数,也具有类型转换功能。它是把int型转化为number类型。与上面的类型转换函数(把number或其子类类型转为int)相反。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询