c++ - 有没有办法根据创建的派生类来分配成员?
问题描述
我想我忽略了超级明显,但我只是想要它,这样如果我创建一个 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"
}
解决方案
只需在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") {
}
};
推荐阅读
- transactions - 外部系统在 maximo 中没有响应,也无法在日志中跟踪事件
- excel - 根据 OffSet 值查找文本值、偏移量、输入公式
- python - 如何在 WebDriverWait 预期条件中指定子元素?
- vba - 如何在 AutoExec 宏中获取 WinWord.exe 的命令行参数?
- javascript - VueJS - “npm run build”不会在 dist 文件夹中生成 index.html 文件
- tkinter - 如何使用 Tkinter 为文本框提供寄宿生。我尝试将 bg 作为一些值,但仍然无法看到寄宿生出现
- azure - 在 Azure NGINX 服务器正在运行但网站未加载
- kubernetes - Kubernetes:无法加入远程主节点
- javascript - AJAX 数据被空发送到 PHP 函数
- unity3d - 重用或复制碰撞力