首页 > 解决方案 > 有没有办法根据创建的派生类来分配成员?

问题描述

我想我忽略了超级明显,但我只是想要它,这样如果我创建一个 Shape 它的名称为“Unique”,如果我创建一个 Cube 它的名称为“Cube”,而无需重新设置它在派生类中。

class Shape
{public:
    Shape() : type("Unique") {}
    std::string type;
};


class Sphere : public Shape
{public:
    Sphere() : Shape() { 
        //type= "Sphere";
    }
};

class Cube : public Shape
{public:
    Cube() : Shape() {
        // type = "Cube"
    }

};

int main()
{
     Shape s; // Has name "Unique"
     Cube c; // Has name "Cube"
}

标签: c++constructor

解决方案


只需在Shape构造函数中添加一个可选参数

class Shape
{public:
    Shape(const std::string& t = "Unique") : type(t) {}
    std::string type;
};


class Sphere : public Shape
{public:
    Sphere() : Shape("Sphere") { 
    }
};

class Cube : public Shape
{public:
    Cube() : Shape("Cube") {
    }

};

推荐阅读