什么是促销构造函数?它与复制构造函数/赋值运算符有什么关系吗?我看到了一个例子,但是无法理解。
#include <iostream>
#include <vector>
using namespace std;
class base{
public:
base(){
cout << endl << "base class default construtor" << endl;
}
base(const base& ref1){
cout << endl << "base class copy constructor" << endl;
}
base(int) {
cout << endl << "base class promotion constructor" << endl;
}
};
class derived : public base{
public:
derived(){
cout << endl << "derived class default constructor" << endl;
}
derived(const derived& ref2){
cout << endl << "derived class copy constructor" << endl;
}
derived(int) {
cout << endl << "derived class promotion constructor" << endl;
}
};
int main(){
vector<base> vect;
vect.push_back(base(1));
vect.push_back(base(1));
vect.push_back(base(2));
return 0;
}
当我编译并执行:时,命令如下所示:
基类促销构造函数
基类复制构造函数
基类促销构造函数
基类促销构造函数
基类复制构造函数
基类促销构造函数
基类促销构造函数
基类复制构造函数
基类促销构造函数
请帮助我了解促销构造函数的这一概念。我已经在网上搜索过,但是没有得到太多的信息。
谢谢
什么是促销构造函数?
它不是C ++中的标准术语。升级是指自动应用于内置数字类型的某些类型转换,并且不涉及类或构造函数。
您的示例中的构造函数正在转换构造函数:采用单个参数的非显式构造函数,可用于将该参数类型转换为类类型。
由于不是明确的,因此它们既可以用于base(1)
示例中的显式转换,也可以用于隐式转换(如您的示例)
vect.push_back(42);
您的示例未演示。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句