#include <iostream> using namespace std; class Fraction // 分数 { public: Fraction(int num, int den = 1):m_numerator(num),m_denominator(den){} operator double() const{ // 转换函数,将整数型的分子/分母转换为分数形式 return ((double)m_numerator / (double)m_denominator); } private: int m_numerator; // 分子 int m_denominator; // 分母 }; int main() { Fraction f(3,5); // 分子为3 分母为5 double result = 4 f; // 调用operator double()将f转换为double类型 cout << result << endl; },下面我们就来说一说关于c语言十二个基本函数?我们一起去了解并探讨一下这个问题吧!

c语言十二个基本函数(C学习笔记转换函数)

c语言十二个基本函数

#include <iostream> using namespace std; class Fraction // 分数 { public: Fraction(int num, int den = 1):m_numerator(num),m_denominator(den){} operator double() const{ // 转换函数,将整数型的分子/分母转换为分数形式 return ((double)m_numerator / (double)m_denominator); } private: int m_numerator; // 分子 int m_denominator; // 分母 }; int main() { Fraction f(3,5); // 分子为3 分母为5 double result = 4 f; // 调用operator double()将f转换为double类型 cout << result << endl; }

转换函数,即上述类中的operator double();函数,为什么函数里面返回的是一个double类型,而函数却没有返回值呢?原来函数本身就没有返回值,而具体的返回值就是函数名称double。

转换函数可以将之前出现的任何类型都可转换过来,比如转换为字符串等等,也可以是自定义的类型。

例如将分子分母转换为字符串,并将其拼接起来。

operator string()const{ string ret; char buffer[4]; _itoa_s(m_numerator,buffer,10); // 以10进制进行转换 ret = buffer; _itoa_s(m_denominator,buffer,10); ret.append(buffer); return ret; }

,