zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    P4297 [NOI2006]网络收费
    P4207 [NOI2005]月下柠檬树
    bzoj2517 矩形覆盖
    bzoj2506 calc
    ......
    SP1811 LCS
    CF585E Present for Vitalik the Philatelist
    好康的
    CF605E Intergalaxy Trips
    字符串
  • 原文地址:https://www.cnblogs.com/TaoR320/p/12680224.html
Copyright © 2011-2022 走看看