【足迹C++primer】49、超载,更改,运营商
2024-08-23 14:26:26
超载,更改。运营商
Conversion Operators
转换操作符
operator type() const
Conversions to
an array or a function type are not permitted.
转换函数必须是成员函数。不能指定返回 类型,必须有一个空的參数列表。
函数通常应 const。
Conversions to
an array or a function type are not permitted.
转换函数必须是成员函数。不能指定返回 类型,必须有一个空的參数列表。
函数通常应 const。
Defining a Class with a Conversion Operator(献给热爱英语的朋友)
定义一个类,表示一个在0到255范围类的一个整数
class SmallInt
{
public:
SmallInt(int i=0):val(i)
{
if(i<0 || i>255)
throw std::out_of_range("越界! !! 越界进球无效! ");
}
explicit operator int() const {return val;} //转换操作符。不能有參数,是成员函数,没有返回类型
private:
size_t val;
};
实现下面:
void fun1()
{
SmallInt si;
si=4; //吧4隐式转换成SmallInt类型
// si+3; //隐式转换si为int类型,因为explicit这里会出错,加了explicit之后仅仅能显式转换
}
Conversion Operators Can Yield Suprising Results
重载操作符能产生惊人的结果
void fun2()
{
int i=42;
// cin<<i; this code would be legal if the conversion to bool were not explicit! }
说是这样说可是究竟有什么惊人的效果,反正我是没感觉!
explicit Conversion Operators
明白转换操作
说白了就是叫我们使用explicit来使用!
全代码!这次就简洁点哈哈!
/**
* 功能:重载。转换,运算符
* 时间:2014年7月19日15:05:21
* 作者:cutter_point
*/ #include<iostream>
#include <stdexcept> using namespace std; /**************************************
Conversion Operators
转换操作符
**************************************/
/*
operator type() const
Conversions to
an array or a function type are not permitted.
转换函数必须是成员函数。不能指定返回 类型,必须有一个空的參数列表。
函数通常应 const。
*/
/**
Defining a Class with a Conversion Operator
*/
//定义一个类。表示一个在0到255范围类的一个整数
class SmallInt
{
public:
SmallInt(int i=0):val(i)
{
if(i<0 || i>255)
throw std::out_of_range("越界!!!越界进球无效!");
}
explicit operator int() const {return val;} //转换操作符。不能有參数。是成员函数。没有返回类型
private:
size_t val;
}; void fun1()
{
SmallInt si;
si=4; //吧4隐式转换成SmallInt类型
// si+3; //隐式转换si为int类型,因为explicit这里会出错。加了explicit之后仅仅能显式转换
} /**
Conversion Operators Can Yield Suprising Results
重载操作符能产生惊人的结果
*/
void fun2()
{
int i=42;
// cin<<i; this code would be legal if the conversion to bool were not explicit! } /**
explicit Conversion Operators
明白转换操作
*/ //说白了就是叫我们使用explicit来使用! int main()
{
return 0;
}
我来说一下,人活在这世界上肯定会遭遇非常多不幸和痛苦,并且一般这样的不幸的事从来都不是一个一个来的,他们会在你措手不及的时候一下子全来了。就像精明的猎人。在你露出破绽的一瞬间把所有的活力倾泻在你的身上,确保万无一失。
每一个人不可能一辈子都不犯错,可是当厄运来临的时候我们要时刻准备好,不要惊慌失措。冷静下来,好好想一想你应该怎样去面对!
版权声明:本文博主原创文章,博客,未经同意不得转载。
最新文章
- GJM :C++ 网络编程 [转载]
- Android学习笔记(六)
- Android开发:最详细的 NavigationDrawer 开发实践总结
- centos搭建zabbix
- 关闭ubuntu apport
- mysql语句在node.js中的写法
- My new life
- Sqoop工具
- [Inside HotSpot] 模板解释器
- Python 语法2
- 剑指offer——二叉树的镜像
- Gym - 100989L
- Zabbix 监控服务
- 虚拟机连不上网 Xshell连不上虚拟机
- linux网络配置命令(二)——ip
- Thymeleaf使用bootstrap及其bootstrap相关插件(一)
- sql查询未走索引问题分析之查询数据量过大
- ExtJS 4.2 教程-08:布局系统详解
- pandas对excel处理过程中的总结
- linux知识体系
热门文章
- COCOS学习笔记--持续动作ActionInterval
- winform中comboBox控件加默认选项的问题
- ZOJ 2723 Semi-Prime ||ZOJ 2060 Fibonacci Again 水水水!
- python3 随机生成10以内的加法算术题
- C# is 和 as的用法
- IOS获取手机设备所有应用
- Leetcode 第 2 题(Add Two Numbers)
- 9.7 Binder系统_c++实现_编写程序
- log4cxx入门篇
- Swift--使图片360&#176; 周期旋转