假设我有如下代码。
class Color
{
static Color a;
public:
static Color newColor(int r,int g,int b){
Color color;
color.setR(r);
color.setG(g);
color.setB(b);
return color;
}
}
是否可以使用“Color a = Color::newColor(255,0,0);”初始化静态变量“a”? 我想我在某处读到使用此方法创建实例将创建该类的两个实例。这样做的正确方法是什么?
最佳答案
是的,颜色被实例化了两次
- newCOlor 中的局部变量 color 和
- 静态 Color a(由于您要返回一个对象,因此在静态变量定义/初始化时将发生成员复制)。
一定要把 Color::a = Color::newColor(255,0,0);在 cpp/cc 文件中,意味着不在头文件中。
关于c++ - 从静态函数创建类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5255170/