C ++中的Promotion构造函数

s

什么是促销构造函数?它与复制构造函数/赋值运算符有什么关系吗?我看到了一个例子,但是无法理解。

#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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章