IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> More Effective C++ 条款05:对定制的类型转换函数保持警觉 -> 正文阅读

[C++知识库]More Effective C++ 条款05:对定制的类型转换函数保持警觉

C++的类型转换,两种函数允许编译器执行这样的操作:单参数构造和隐式类型转换操作符。

单参数构造指可能声明单一参数,有可能拥有多个参数,并且除了第一参数之外都有默认值:

class Name
{
public:
    Name(const string& s); //可以把string转换为name
    ...
};

class Rational
{
public:
    Rational(int numerator = 0, int denominator = 1);  //可以把int转为Rational
    ...
}

隐式类型转换操作符,是一个拥有奇怪名称的member function:关键词operator之后加上一个类型名称。你不能为此函数指定返回值类型,因为其返回值类型基本上已经表在于函数名称上。

class Rational
{
public:
    ...
    operator double() const;  //将Rational转换为double
};

Rational r(1,2);
double d = 0.5 * r;  //将r转换为double,然后执行乘法运算

假设你想像内建类型一样输出 Rational objects内容,也就是希望这么做:

Rational r(1, 2);
cout << r;  //应该输出 1/2

但假设忘记为Rational写一个operator <<,编译器在执行上面的动作时候,它会想尽各种办法(包括找出一系列可接受的隐式类型转换)让函数调用成功,它发现了,只要调用Rational::operator double,将r隐式转换为double,调用动作便能成功,于是,上述代码将r以浮点数而非分数的形式输出。

解决办法就是将以功能对等的另一个函数取代类型转换操作符,不妨使用一个名为asDouble的函数取代operator double。

通过单参数构造完成的隐式转换,可以使用explicit声明进行消除。

template<class T>
class Array{
public:
    explicit Array(int size);
    ...
};

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 21:57:07  更:2022-03-11 21:57:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:36:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码