解析C++转换构造函数(调用规则)
来源:互联网 发布:淘宝上的aj是正品吗 编辑:程序博客网 时间:2024/06/11 20:36
什么叫转换构造函数?
当一个构造函数只有一个参数,而且该参数又不是本类的const引用时,这种构造函数称为转换构造函数。
参考一下示例:
// TypeSwitch.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <IOSTREAM>using namespace std;class Complex{public:Complex():real(0),imag(0){};Complex(double r, double i):real(r), imag(i){}; //1> 转换构造函数Complex(double r):real(r),imag(0){cout<<"转换构造函数被调用。 \n";}; void Print(){cout<< "real = " << real << " image = " << imag<< endl;}Complex& operator+(const Complex &cl){this->real += cl.real;this->imag += cl.imag;return *this;} //2> = 赋值运算重载// Complex& operator = (double i)// {// this->real = 0;// this->imag = i;// cout<<"赋值运算重载被调用"<<endl;// return *this;// }private:double real;double imag;};int main(int argc, char* argv[]){Complex cl;//构造函数Complex()被调用;cl.Print();//real = 0 imag = 0;cl = 1.5; //1>转换构造函数被调用;如果1>,2>都存在,2> = 赋值运算重载会被调用;cl.Print();//1>的时候,real = 1.5 imag = 0; 1>,2>的时候,real = 0 imag = 1.5;cl = Complex(2,3);//构造函数Complex(double r, double i)被调用后,调用默认=赋值运算;cl.Print();//real = 2 imag = 3;cl = Complex(1, 1) + 2.5;//1>转换构造函数被调用;如果1>,2>都存在,1>转换构造函数被调用cl.Print();//real = 3.5 imag = 1;return 0;}
1 0
- 解析C++转换构造函数(调用规则)
- 构造函数调用规则研究
- C++构造函数调用规则
- 构造函数的调用规则
- 构造函数的调用规则
- 函数调用中的类型转换 c提升规则
- c++-转换构造函数
- c++ 构造函数 继承 调用规则
- C++之 构造函数调用规则
- 【c/c++】转换构造函数
- 怎么调用私有构造函数(C++)
- C/C++函数调用规则
- C/C++函数调用规则
- C/C++函数调用规则
- C/C++函数调用规则
- C,C++,VC++函数调用规则
- c++构造函数和析构函数调用规则
- C++构造函数调用,自动类型转换
- Arrays
- 控件看不见或者看得见不能点击的原因小结
- 编写良好的 git 提交信息
- 关于用连续用多个scanf函数输入数据时前面的scanf函数会在缓冲区留下回车符的问题
- 如果看了此文你还不懂傅里叶变换,那就过来掐死我吧【完整版】
- 解析C++转换构造函数(调用规则)
- 脚本创建(选择结构和循环结构)
- 真正统治世界的十大算法
- Lua和C之间的交互【转】
- C# GC垃圾自动回收(陷阱)
- MySql启动出错:server quit without updating PID file (/usr/local/mysql/mysql.pid)
- 【斜率DP】【bzoj 1597】: [Usaco2008 Mar]土地购买
- c++ CString string char* char int类型的相互转换
- cocos2d-x大神们的博客集合