相关疑难解决方法(0)

什么是移动语义?

我刚刚听完了Scott Meyers关于C++ 0x的软件工程电台播客采访.大多数新功能对我来说都很有意义,我现在对C++ 0x感到兴奋,除了一个.我仍然没有得到移动语义 ......它们究竟是什么?

c++ c++-faq move-semantics c++11

1614
推荐指数
11
解决办法
39万
查看次数

auto_ptr是否已被弃用?

  1. 在传入的C++标准中是否会弃用auto_ptr?
  2. unique_ptr应该用于所有权转移而不是shared_ptr吗?
  3. 如果unique_ptr不在标准中,那么我是否需要使用shared_ptr?

c++ standards smart-pointers auto-ptr unique-ptr

77
推荐指数
3
解决办法
4万
查看次数

复制构造函数可以采用非const参数吗?

我有这个问题,有foo()如下功能,

vector<ClassA> vec;

void foo()
{
    ClassA a;   //inside foo, a ClassA object will be created
    a._ptr = new char[10];

    vec.push_back(a);   //and this newly created ClassA object should be put into vec for later use
}
Run Code Online (Sandbox Code Playgroud)

而AFAIK vec将调用ClassAcopy-ctor来制作新创建的对象的副本a,这就是问题所在.如果我ClassA按照通常的方式定义副本,

ClassA::ClassA(const ClassA &ra) : _ptr(0)
{
    _ptr = ra._ptr;
}
Run Code Online (Sandbox Code Playgroud)

然后对象a及其副本(由vec创建)将_ptr指向同一区域的指针,当foo完成时,a将调用析构函数释放_ptr,然后a复制vec将是一个悬空指针,对吧?由于这个问题,我想以ClassA这种方式实现copy-ctor,

ClassA::ClassA(ClassA &ra) : _ptr(0) //take non-const …
Run Code Online (Sandbox Code Playgroud)

c++

5
推荐指数
2
解决办法
6151
查看次数