在C++中,当一个构造函数只有一个参数,而且该参数又不是本类的const引用时,这种构造函数称为转换构造函数。
转换构造函数要如何理解,从字面上将转换和构造函数分开理解。
1.发生了转换,如何发生转换的?
2.转换构造函数也是一个构造函数,完全可以当构造函数一样使用
先带着这两个问题来看段代码就会明白:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
//梁笔记 //zouzhongliang.com #include <iostream> using namespace std; class A { private: int a; public: A(){ cout<<"调用无参构造函数"<<endl; } ~A(){ cout<<"调用析构函数"<<endl; } A(int a){ this->a = a; cout<<"调用转换构造函数"<<endl; } void print(){ cout<<a<<endl; cout<<"成员函数print"<<endl; } }; int main() { A a1(1); //调用转换构造函数 A a2 = 2; //隐式调用转换构造函数 return 0; } |
输出:
1 2 3 4 |
调用转换构造函数 调用转换构造函数 调用析构函数 调用析构函数 |
A a1(1); 这句代码调用构造函数, 调用的是转换构造函数,
A a2 = 2;? 这句代码将int类型转成A类型,如果没有定义转换构造函数,这句代码编译不会通过,这就是转换
注:转换构造函数更多运用是转换,一般都是在隐式情况下调用。
因为转换构造函数常发生在隐式调用,也就有了explicit关键字的出现。
《转换构造函数有什么用途》上有1条评论
评论已关闭。