当前位置:  开发笔记 > 编程语言 > 正文

复制构造函数

如何解决《复制构造函数》经验,为你挑选了1个好方法。

我试图用我的拷贝构造函数复制"深拷贝"的一部分:

class myClass
{
public:

    myClass ( const char *cPtr, const float fValue )
    myClass ( const myClass& myClassT );

private:

    const char* &myAddress;
    float MyFloater;

};

//myClass.cpp

myClass::myClass( const char *cPtr, const float fValue )
{
// Initialize both private varaible types
   const char* &myAddress = cPtr;
   float myFloater = fValue;
}

myClass::myClass( const myClass& classType )
{
// copy what we did ... 
      myAddress = myClass.myAddress;
      myFloater = myClass.myFloater;
}

只有这一点,我只得到,"必须初始化whataver基础/成员initalizer列表中的变量.

他们在构造函数中被初始化!我需要对classtype对象地址做什么?



1> Jesse Beder..:
const char* &myAddress;

是一个引用,因此它必须在构造函数期间在初始化程序列表中初始化,即

myClass::myClass(const char *& cPtr, const float fValue): myAddress(cPtr)

请注意,这是处理这种情况的一种不好的方法(当然,取决于你要做的事情),因为如果指针传递超出范围,那么你就搞砸了.

更好的方法(再次,取决于你要做的事情)只是将指针复制过来,在"深度"复制过程中,重新分配和复制其内容.当然,除非你真的需要引用指针.

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有