拷贝构造函数第一个参数最好使用const

拷贝构造函数第一个参数最好使用const

  

  拷贝构造函数的第一个参数要求是自身类型的引用,但是没有一定要求具有底层const属性即对常量的引用,但是使用时最好加上const,原因是我们可能在某些“不知道”的情况下对常量对象调用拷贝构造函数。

  来看一个例子

class HasPtr{
public:
    HasPtr(const std::string &s=std::string()):ps(new std::string(s)),i(0){
        std::cout<<"construction call"<<std::endl;
        }
    HasPtr(HasPtr &hasptr):i(hasptr.i),ps(new std::string(*hasptr.ps))
    {
        std::cout<<"copy construction call"<<std::endl;;
    }
   ~HasPtr()
    {   delete ps;
        std::cout<<"deconstruction call"<<std::endl;    }
private:
    std::string *ps;
    int i;
};
int main()
{
    HasPtr ptr1("a"),ptr2("c"),ptr3("b");
    std::vector<HasPtr> vec{ptr1,ptr2,ptr3};
    return 0;
}
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 拷贝构造函数第一个参数最好使用const