内容: 若你为你的设计的类准备了运算函数,以实现两个类对象之间的运算,而且你同时也允许其他类型隐式转换为你设计的类的对象,那么请你将运算函数定义为non-member函数,因为这样才能使得运算符左右两侧的对象既可以是一个类对象,也可以是一个非类对象,但可以隐式转换为这种类对象的对象。
情况一:定义为成员函数
代码:

运行结果:

结果分析:如果你将你的运算函数定义为你的成员函数,那么你必须保证你的运算符左侧的对象是类对象,而不能是其他对象,尽管它可以隐式转换过来。
情况二:定义为non-member函数,但构造函数为explicit
代码:

结果:

结果:也是错误的,因为你的构造不允许隐式转换,所以这种情况下,你定义为非成员函数也是解决不了的。
情况三:定义为非成员函数,且构造函数为非explicit
代码:

结果:

甚至是两侧都不是类对象,但是是可以隐式转换成类对象的,也可以。情况如下:

结果:

分析:当你的构造函数为非explicit,且你定义了non-member函数,那么你将可以在运算符两侧使用类对象或者非类对象,但是转换成类对象的对象。你的使用将变得更加灵活。
最后
以上就是寒冷大碗最近收集整理的关于【博客28】若你允许类型转换后进行运算,请配合non-menber函数!!的全部内容,更多相关【博客28】若你允许类型转换后进行运算,请配合non-menber函数内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复