C++转换构造函数的学习

    构造函数有两个功能:1.初始化    2.类型转换

    这里主要解释类型转换,单个参数的构造函数被称为转换构造函数。

    转换构造函数的作用:初始化和类型转换    

    类型转换的步骤:

      1.调用转换构造函数,将=右边的数 转换成类类型(生成一个临时对象)

      2.将临时对象赋值给t对象,调用的是=运算符

Test.h

 
 
  1. //Test.h 
  2.  
  3. # ifndef _TEST_H_ 
  4. # define _TEST_H_ 
  5.  
  6. class Test 
  7. public
  8.     Test();  
  9.     Test(int num); 
  10.     ~Test(); 
  11. //explicit Test(int num); 
  12.  
  13.     void Display(); 
  14.          
  15. private
  16.     int num_; 
  17. }; 
  18.  
  19. # endif //_TEST_H_ 

Test.cpp

 
 
  1. //Test.cpp 
  2.  
  3. # include "Test.h" 
  4. # include <iostream> 
  5. using namespace std; 
  6.  
  7. void Test::Display() 
  8.     cout << num_ << endl; 
  9. Test::Test() 
  10.     num_ = 0; 
  11.     cout<<"Initializing Default" << endl; 
  12. Test::Test(int num) 
  13.     num_ = num; 
  14.     cout<<"Initializing "<<num_ << endl; 
  15.  
  16. Test::~Test() 
  17.     cout << "Destory " << num_ << endl; 

main.cpp

 
 
  1. # include "Test.h" 
  2.  
  3. int main(void
  4. {  
  5.     Test t(10); //普通构造函数 
  6.                
  7.     t = 20;  //要将20这个整数赋值给t对象 
  8.             //1.调用转换构造函数,将20这个整数转换成类类型(生成一个临时对象)         
  9.             //2.将临时对象赋值给t对象,调用的是=运算符 
  10.             //赋值完就会马上销毁临时对象 
  11.  
  12.  
  13.     Test t2;     
  14.              
  15.     return 0; 

运行结果:

 如果不想让单参数的构造函数进行隐式的进行类类型转换,可以在构造函数的前面加上:

    explicit关键字

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值