类型转化函数

简介: 类型转化函数

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

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;
}


相关文章
|
5月前
|
安全 程序员 C语言
C++(四)类型强转
本文详细介绍了C++中的四种类型强制转换:`static_cast`、`reinterpret_cast`、`const_cast`和`dynamic_cast`。每种转换都有其特定用途和适用场景,如`static_cast`用于相关类型间的显式转换,`reinterpret_cast`用于低层内存布局操作,`const_cast`用于添加或移除`const`限定符,而`dynamic_cast`则用于运行时的类型检查和转换。通过具体示例展示了如何正确使用这四种转换操作符,帮助开发者更好地理解和掌握C++中的类型转换机制。
|
6月前
【函数】数组做函数参数
【函数】数组做函数参数
|
弹性计算 JavaScript 编译器
函数类型-3:函数重载
本实验将介绍TypeScript中的函数重载
函数类型-3:函数重载
|
9月前
通过c字符串对拷贝构造和赋值构造进行了解
通过c字符串对拷贝构造和赋值构造进行了解
65 0
|
9月前
|
编译器 C++
(C++)string类及其函数
(C++)string类及其函数
81 0
|
安全 程序员 编译器
【C++】C++中的类型转化
说起类型转化,我们在C语言之前的学习中可以了解到,类型转换可以分为两种情况:隐式类型转化;显示类型转化。但是为什么在c++中还要继续对类型转化做文章呢?我们一起来看:
98 0
【C++】C++中的类型转化
|
存储 编译器 C++
2023-4-27-深入理解C++指针类型间强制转换
2023-4-27-深入理解C++指针类型间强制转换
354 0
C++转换构造函数以及类型转换函数
🐰转换构造函数 🐰类型转换函数
|
存储 大数据
类型转化问题
关于类型转换问题,通俗的讲就是,把碗里的东西可以倒进锅里而不会溢出 如果把锅里的东西倒进碗里,那么就会溢出,如果硬要倒就是强制转换,会产生 数据分割,从而改变数据的本质。
121 0
类型转化问题
|
编译器 程序员 C++
C++中参数需要类型转换,请不要用成员函数
C++中参数需要类型转换,请不要用成员函数
178 0

热门文章

最新文章