类型转化函数

简介: 类型转化函数

标准数据类型之间会进行隐式的类型转化

short s = 'a';
    unsigned int ui = 1000;
    int i = -2000;
    double d = i;
    cout << "d = " << d << endl;
    cout << "ui = " << ui << endl;
    cout << "ui + i = " << ui + i << endl;
    if( (ui + i) > 0 )
    {
        cout << "Positive" << endl;
    }
    else
    {
        cout << "Negative" << endl;
    }
    cout << "sizeof(s + 'b') = " << sizeof(s + 'b') << endl;


构造函数可以定义不同类型的参数


构造函数满足下列条件时称为:转化构造函数(加上explicit表明系统不能自己调用,只能用户自我调用)

1,有且只有一个参数

2,参数是基本类型

3,参数是其他类类型

 

编译器遇到:Test t;  t=5;   时,自己会看类中是否定义转化构造函数---------->有,便等价于  t=Test(5);

class Test
{
    int mValue;
public:
    Test()
    {
        mValue = 0;
    }
    explicit Test(int i)
    {
        mValue = i;
    }
    Test operator + (const Test& p)
    {
        Test ret(mValue + p.mValue);
        return ret;
    }
    int value()
    {
        return mValue;
    }
};
int main()
{   
    Test t;
    t = static_cast<Test>(5);    // t = Test(5);
    Test r;
    r = t + static_cast<Test>(10);   // r = t + Test(10);
    cout << r.value() << endl;
    return 0;
}


类类型转化为基本数据类型

 

类型转换函数:

  1.与转换构造函数具有同等的地位;

  2.使得编译器有能力将对象转化为其他类型

 3.编译器能够隐式的使用类型装换函数

#include <iostream>
#include <string>
using namespace std;
using namespace std;
class Test
{
    int mValue;
public:
    Test(int i = 0)
    {
        mValue = i;
    }
    int value()
    {
        return mValue;
    }
    operator int ()
    {
        return mValue;
    }
};
int main()
{   
    Test t(100);
    int i = t;
    cout << "t.value() = " << t.value() << endl;
    cout << "i = " << i << endl;
    return 0;
}


相关文章
|
存储 大数据
类型转化问题
关于类型转换问题,通俗的讲就是,把碗里的东西可以倒进锅里而不会溢出 如果把锅里的东西倒进碗里,那么就会溢出,如果硬要倒就是强制转换,会产生 数据分割,从而改变数据的本质。
126 0
类型转化问题
|
安全 程序员 编译器
【C++】C++中的类型转化
说起类型转化,我们在C语言之前的学习中可以了解到,类型转换可以分为两种情况:隐式类型转化;显示类型转化。但是为什么在c++中还要继续对类型转化做文章呢?我们一起来看:
102 0
【C++】C++中的类型转化
|
存储 Java BI
常量强制数据类型转化
String:不是基本数据类型,是由多的Byte数据类型组成的,原来是由char类型组成的,这里做了优化因为英文字母用ASCLL表示,而ASCLL用Byte类型完全够用,给老外优化的。 常量值也是有类型之说的:整数默认int,小数double,单引号默认char,双引号默认为字符串类型,在Java中大的没办法给小的数据类型,非要给的话声明。
1089 0
|
安全 C语言 C++
C++中的显式类型转化
  类型转化也许大家并不陌生,int i; float j; j = (float)i; i = (int)j; 像这样的显式转化其实很常见,强制类型转换可能会丢失部分数据,所以如果不加(int)做强制转换,严检查的编译会报错,宽检查的编译会报warning。
1023 0
|
JSON 数据格式
解构(数组,对象,字符串,数值,布尔,函数参数)
解构(数组,对象,字符串,数值,布尔,函数参数)https://es6.ruanyifeng.com/#docs/destructuring
170 0
|
10月前
|
C++
C/C++数据类型转换函数大全
【代码】C/C++数据类型转换函数大全。
64 0
|
7月前
【函数】数组做函数参数
【函数】数组做函数参数
|
C++ 编译器 C语言
C++ 变量和复合类型
前面说了C++的基本数据类型,下面来看看在C++中如何定义变量和常量。 变量 定义和初始化 C++定义变量的方式和C语言一样,也可以在定义的同时初始化。值得一提的是列表初始化,在原来的C++版本中可以用于初始化数组等。
994 0
C++转换构造函数以及类型转换函数
🐰转换构造函数 🐰类型转换函数