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。

最新文章

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

热门文章

  1. Python 的垃圾回收
  2. JavaWeb-JDBC-Mybatis-Junit-Maven-Lombok
  3. Java课程设计---浏览学生(实现根据姓名查询)
  4. LeetCode-055-跳跃游戏
  5. springboot----四、yaml配置注入
  6. HarmonyOS小白入门设备开发的“芯”路历程
  7. 微信小程序下拉框实现
  8. 【故障公告】没有龙卷风,k8s集群翻船3次,投用双集群恢复
  9. LGP3346题解
  10. Redis安装、说明、Python中使用