C语言类型转换原理

C语言类型转换

int a;
a=1.23

这里把1.23赋值给a发生了隐式转换,原理如下:在这里插入图片描述

int a;
float b=3.14; 
a=b;

b赋值给a的过程:首先找一个中间变量是a的类型(该例中,只能把b取整得到),然后再用中间过渡变量给a赋值。
在c++中类的构造函数发生的类型转换也是相同的原理

整型的100要转换成对象型的t,必须要能找到一个中间对象,对该例来讲,构造函数Test(int d=0)刚好可以通过一个整型变量d来构造出一个对象,所以可以得到中间对象,转换就可以进行。

参考下列代码:

#include <iostream>
using namespace std;

class Test
{

public:
	Test(int d=0)
	{
		data=d;
		cout<<"创建对象t"<<this<<endl; 
	}
    ~Test()
	{
		cout<<"注销对象t"<<this<<endl;
	 } 
private:
    int data;
};

int main()
{
	Test t;   
	t=100;  //可以将整型100赋值给对象t 
	return 0;
}

可以以将整型常量100赋值给对象t,原理是通过在栈区申请临时无名对象,再把100传递进该空间,由该临时无名对象通过相应的赋值函数赋值给对象t。

猜你喜欢

转载自blog.csdn.net/weixin_43919932/article/details/88564286
今日推荐