广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++ 转换函数用法案例详解
  • 166
分享到

C++ 转换函数用法案例详解

2024-04-02 19:04:59 166人浏览 泡泡鱼
摘要

1.标准数据之间会进行隐式类型安全转换,规则如下:  在这里主要探讨c++中类类型与普通类型的转换: 1.类类型转换普通类型 class Fraction { pub

1.标准数据之间会进行隐式类型安全转换,规则如下:

 在这里主要探讨c++中类类型与普通类型的转换:

1.类类型转换普通类型


class Fraction
{
public:
	Fraction(int num,int den=1);
	~Fraction();
    //转换函数
   
	operator double() const {
		return (double)(m_Numerator*1.0 / m_Denominator);
	}
private:
	int  m_Numerator;
	int m_Denominator;
};
 
 
 
Fraction f(3, 5);
double d = 4 + f;//d=4.6

这里4+f,调用转换函数将f转换为0.6

2.普通类型转换为类类型(non-explicit-one-argument ctor)


class Fraction
{
public:
	Fraction(int num,int den=1);
	~Fraction();
	
	Fraction operator+(const Fraction& f) {
		return Fraction(this->m_Numerator * f.m_Denominator + this->m_Denominator * f.m_Numerator,
			f.m_Denominator * this->m_Denominator);
	}
 
private:
	int  m_Numerator;
	int m_Denominator;
};
Fraction f(3, 5);
Fraction d = f + 4;//调用+运算符函数,4会转为Fraction(4,1),含有接受一个参数的构造函数,否则也无法转换

3.同时含有转换函数和可以隐式的调用构造函数(转换构造参数)会报错


class Fraction
{
public: 
   
	Fraction(int num,int den=1);
	~Fraction();
 
	operator double() const {
		return (double)(m_Numerator*1.0 / m_Denominator);
	}
	Fraction operator+(const Fraction& f) {
		return Fraction(this->m_Numerator * f.m_Denominator + this->m_Denominator * f.m_Numerator,
			f.m_Denominator * this->m_Denominator);
	}
private:
	int  m_Numerator;
	int m_Denominator;
};

报错:   “Fraction::operator +”: 2 个重载有相似的转换    ,

所以在我们写构造函数都会使用关键字 explicit 防止类型隐式转换


class Fraction
{
public:
	
	explicit Fraction(int num,int den=1);
	~Fraction();
	operator double() const {
		return (double)(m_Numerator*1.0 / m_Denominator);
	}
	Fraction operator+(const Fraction& f) {
		return Fraction(this->m_Numerator * f.m_Denominator + this->m_Denominator * f.m_Numerator,
			f.m_Denominator * this->m_Denominator);
	}
 
private:
	int  m_Numerator;
	int m_Denominator;
};
Fraction f(3, 5);
Fraction d = f + 4;//报错:不存在从 "double" 转换到 "Fraction" 的适当构造函数
double d = f + 4;//可以,f转换

到此这篇关于C++ 转换函数用法案例详解的文章就介绍到这了,更多相关C++ 转换函数用法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++ 转换函数用法案例详解

本文链接: https://www.lsjlt.com/news/135367.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++ 转换函数用法案例详解
    1.标准数据之间会进行隐式类型安全转换,规则如下:  在这里主要探讨c++中类类型与普通类型的转换: 1.类类型转换普通类型 class Fraction { pub...
    99+
    2022-11-12
  • C++ atoi()函数用法案例详解
    目录1 功能2 格式3 注意事项3.1 关于参数的注意事项3.2 关于返回值的注意事项3.3 判断转换是否成功4 宽字符的转换1 功能 atoi()函数将数字格式的字符串转换为整数类...
    99+
    2022-11-12
  • C++ assert()函数用法案例详解
    1. 简介 assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行。 原型定义: #include <assert.h&...
    99+
    2022-11-12
  • C++ seekg函数用法案例详解
    C++ seekg函数用法详解 很多时候用户可能会这样操作,打开一个文件,处理其中的所有数据,然后将文件倒回到开头,再次对它进行处理,但是这可能有点不同。例如,用户可能会要求程序在数...
    99+
    2022-11-12
  • C# Directory.GetFiles()函数案例详解
    C#中Directory.GetFiles() 函数的使用 C#中Directory.GetFiles(string path , string searchPattern, Sea...
    99+
    2022-11-12
  • C++ WideCharToMultiByte()函数案例详解
    函数WideCharToMultiByte() 详解 函数原型: int WideCharToMultiByte( UINT CodePage, DWORD dwFla...
    99+
    2022-11-12
  • C++ move()函数案例详解
    要了解move函数首先弄清左值引用和右值引用。 左值、左值引用、右值、右值引用 1、左值和右值的概念         左值是可以放在赋值号左边...
    99+
    2022-11-12
  • C++ Invalidaterect()函数作用案例详解
    函数原型: BOOLInvalidateRect( HWND hWnd, // handle of window withchanged update region 窗口句柄。 ...
    99+
    2022-11-12
  • C语言strtod()函数案例详解
    前言 网上有很多关于strtod()函数的文章,不过大部分都是用strtod()函数转换一个字符 char *str = "111.11"; char *target; doub...
    99+
    2022-11-12
  • C++ 内联函数inline案例详解
    使用函数能够避免将相同代码重写多次的麻烦,还能减少可执行程序的体积,但也会带来程序运行时间上的开销。 函数调用在执行时,首先要在栈中为形参和局部变量分配存储空间,然后还要将实参的值复...
    99+
    2022-11-12
  • C语言 TerminateProcess函数案例详解
    TerminateProcess 顾名思义,就是终止进程的意思。 是WindowsAPI的函数, 示例代码如下: // Demo.cpp : 定义控制台应用程序的入口点。 //终...
    99+
    2022-11-12
  • C语言 bind()函数案例详解
    bind()函数介绍        在建立套接字文件描述符成功后,需要对套接字进行地址和端口的绑定,才能进行数据的接收和发送操作。 函数原型 ...
    99+
    2022-11-12
  • StretchBlt函数和BitBlt函数用法案例详解
    StretchBlt和BitBlt都用在双缓冲视图中,用来显示一幅图像 一、StretchBlt 函数从源矩形中复制一个位图到目标矩形,必要时按目标设备设置的模式进行图像的拉伸或压缩...
    99+
    2022-11-12
  • C语言之system函数案例详解
    来看看在windows操作系统下system () 函数详解(主要是在C语言中的应用) 注意:在windows下的system函数中命令可以不区别大小写! 函数名: system...
    99+
    2022-11-12
  • C语言container of()函数案例详解
          在linux 内核编程中,会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这...
    99+
    2022-11-12
  • C++ cin.get用法案例详解
    与字符串输入一样,有时候使用 cin>> 读取字符也不会按我们想要的结果行事。 例如,因为它会忽略掉所有前导白色空格,所以使用 cin>> 就不可能仅输入一个...
    99+
    2022-11-12
  • C++ template用法案例详解
    有必要记一下这种一眼看上去就很高级的用法。还是编程不够多。都没用过这个。 相信用过c++的人,即便没用过,也肯定都听说过模板类这个词。嗨不巧了,今天讲的就是模板类。 模板是c++支持...
    99+
    2022-11-12
  • C# Console.WriteLine()用法案例详解
    以前用Console.WriteLine()的时候就只会用它直接输出string字符串,但后来发现它还有其它在有些场合下会十分方便的输出方法,这篇就记录一下这些方法的使用吧。 代码格...
    99+
    2022-11-12
  • C++ ostream用法案例详解
    概述 在 C++中,ostream表示输出流,英文”output stream“的简称。在 C++中常见的输出流对象就是标准输出流cout,很少自定义ostream的对象,更多的是直...
    99+
    2022-11-12
  • C# Request.Form用法案例详解
    在CS文件中获得对应页面中的下拉框DropDownList_sitebranch值可以有以下几种方法获得: siteInfo.FZJGID = DropDownList_site...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作