我试图用我的拷贝构造函数复制"深拷贝"的一部分:
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;
}
Run Code Online (Sandbox Code Playgroud)
只有这一点,我只得到,"必须初始化whataver基础/成员initalizer列表中的变量.
他们在构造函数中被初始化!我需要对classtype对象地址做什么?
const char* &myAddress;
Run Code Online (Sandbox Code Playgroud)
是一个引用,因此它必须在构造函数期间在初始化程序列表中初始化,即
myClass::myClass(const char *& cPtr, const float fValue): myAddress(cPtr)
Run Code Online (Sandbox Code Playgroud)
请注意,这是处理这种情况的一种不好的方法(当然,取决于你要做的事情),因为如果指针传递超出范围,那么你就搞砸了.
更好的方法(再次,取决于你要做的事情)只是将指针复制过来,在"深度"复制过程中,重新分配和复制其内容.当然,除非你真的需要引用指针.
| 归档时间: |
|
| 查看次数: |
638 次 |
| 最近记录: |