C语言类型转换原理
2024-08-28 23:15:35
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。
最新文章
- get set 中 快捷键生成的get方法中 renturn 没有 this.对象 中的this 解决方法
- sitemesh2在tomcat和weblogic中同时使用的配置问题
- 教你10分钟内在Windows上完成Rails开发环境的安装和配置
- 2016北京PHP39期 ThinkPHP Discuz Dedecms 微信开发视频教程
- html Doctype作用?
- Qt 多线程学习
- caffe神经网络框架的辅助工具(将图片转换为leveldb格式)
- 在docker container中运行docker-compose
- NYOJ--241--字母统计
- python 如何在一个for循环中遍历两个列表
- commons-pool与commons-pool2连接池
- 快速了解Druid——实时大数据分析软件
- javascript学习记录-2-18
- 从硬件竞争到软实力PK——电视媒体竞争观察
- JavaScript是如何工作的:Service Worker的生命周期及使用场景
- Docker命令行与守护进程如何交互?
- 使用 boot-repair 对 Windows + Ubuntu 双系统引导修复
- js 动态绑定事件 on click 完美解决绑定不成功
- Linux下nginx 的常用命令
- [HNOI 2018]毒瘤