C++中构造函数共有三种调用方法:
1.括号法:类名 对象名(参数)
2.显式调用:类名 对象名 = 类名(参数)
3.隐式调用 :类名 对象名 = 参数
#include// 预处理命令 using namespace std; // 使用标准命名空间std class A { //测试类 public: A(int i = 1):num(i) { cout << "构造" << endl; } A(A const& p) { cout << "拷贝" << endl; this->num = p.num; } int num; }; void show(A temp) { cout << temp.num << endl; } int main() { A a; //构造对象,默认num值为1 a = 10; //构造 + 赋值,先构造匿名对象,num为10,再将值覆盖A,实际上是将10转换为A类型 //即a = A(10) //该行执行完后,匿名对象自动释放 A b = 'a'; //构造,a在传入构造函数时,被强制类型转换为97再赋给num show(20); //20首先被强制类型转换为A类型,即构造匿名对象,相当于show(A temp = 20) //即show(A temp = A(20)) return 0; }
注:如果构造函数前加上关键字"explicit"进行修饰,则只能进行显式调用。另外,转换不允许多参数,也不允许间接转换。
博客为本人原创,如有错误欢迎指正!



