cpp*_*der 4 c++ static copy-constructor
我有一个带有声明为static的容器的类:
class test {
public:
test(const ClassA& aRef, const std::string& token);
test(const test& src);
~test();
private:
ClassA& m_ObjRef;
static std::vector<std::string> s_toks;
};
Run Code Online (Sandbox Code Playgroud)
s_toks容器在test.cpp中定义的构造函数中初始化如下:
std::vector<std::string> test::s_toks;
test::test(const ClassA& aRef, const std::string& token)
: m_ObjRef(aRef)
{
my_tokenize_function(token, s_toks);
}
test::test(const test& src)
: m_ObjRef(src.m_ObjRef)
{
/* What happens to s_toks; */
}
Run Code Online (Sandbox Code Playgroud)
如果我不复制s_toks,并且从新复制的对象访问s_toks,则它为空.处理这个问题的正确方法是什么?
jua*_*nza 13
静态数据成员未绑定到类的单个实例.它存在于所有实例中,并且尝试在类复制构造函数中修改它没有多大意义(除非您使用它来保留某种实例计数器).出于同样的原因,在任何类构造函数中"初始化"它都没有意义.
| 归档时间: |
|
| 查看次数: |
2405 次 |
| 最近记录: |