c++ - 从静态函数创建类对象

标签 c++ class visual-c++ instance static-variables

假设我有如下代码。

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”? 我想我在某处读到使用此方法创建实例将创建该类的两个实例。这样做的正确方法是什么?

最佳答案

是的,颜色被实例化了两次

  1. newCOlor 中的局部变量 color 和
  2. 静态 Color a(由于您要返回一个对象,因此在静态变量定义/初始化时将发生成员复制)。

一定要把 Color::a = Color::newColor(255,0,0);在 cpp/cc 文件中,意味着不在头文件中。

关于c++ - 从静态函数创建类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5255170/

相关文章:

c++ - 运行时已知大小的二维数组列表(或 vector )的声明

c++ - C/C++ : is it possible to pass binary data through the console?

class - 设置 Racket 中定义的同一类的另一个对象实例的私有(private)字段

c++ - 代码执行 : How to create a multiple dimensional array manually?

c++ - rusage 进程/线程的 Cpu 时间不可能

c++ - codeblocks c++ 停止工作可能是由于引用

c++ - Win32 WriteProcessMemory() 神奇的偏移值

c++ - 调试 session 期间的内存泄漏 - 可能的威胁?

html - 带有嵌套 CSS 的类与 ID

python - 类没有属性,即使已设置