c++primer第十一章使用类(二)

来源:互联网 发布:北信源网络准入 编辑:程序博客网 时间:2024/06/03 19:10

ps:
rand()随机函数,会产生相同的随机值。
srand()会覆盖相同的默认值。
time(0)来设置种子,0是用作地址参数。

一、类的自动转换和强制类型转换

类的自动转换:转换构造函数。
调用转换构造函数的几种情况:

class Stonewt{public:    Stonewt(double);};

(1)初始化
(2)赋值
(3)将double值传递给接收Stonewt的参数的函数。
(4)返回值被声明为Stonewt的函数试图返回double值时。
转换构造函数的几种等价方式:
(1)Stonewt a = 275;
(2)Stonewt a(275);
(3)Stonewt a = Stonewt(275);

转换函数:用户自定义的强制类型转换,可以使用强制类型转换那样使用。
格式:
operator typename()
eg : operator double( );
注意点:
(1)转换函数必须是类类型
(2)转换函数不能指定返回类型
(3)转换函数不能有形参

当定义了两种以上的转换函数时,用显示调用转换函数不容易产生二义性的问题。用eplicit关闭隐式转换。

转换函数与友元函数:
举例说明重载加法运算符转换与友元的区别:
类重载:对象 = 对象 + 基本类型
友元: 对象 = 对象 + 基本类型
对象 = 基本类型 + 对象

加法友元可以使程序更加适应自动类型的转换,原因在于两个操作数都可以成为函数的参数。

0 0
原创粉丝点击