【发布时间】:2012-04-11 13:23:31
【问题描述】:
可能重复:
What are the differences between pointer variable and reference variable in C++?
What are the distinctions between the various symbols (*,&, etc) combined with parameters?
我很难理解下面粘贴的这个示例代码。具体来说,函数Buf& operator=( const Buf & );。据我了解,该函数期望返回类Buf 的对象的地址。出现两个问题:
是否同样适用于将其声明为
Buf* operator=( const Buf* );,因为Buf*也是类Buf的实例的地址?如果不是,为什么不呢?如果是这样,它只是编码风格的偏好吗?哪个更好?在对应的函数定义中,返回
*this。据我了解,this是一个指针,或对应于类Buf的对象的地址。所以*this是指针所指向的,即Buf类的对象。这与返回Buf*有冲突吗?函数应该返回this而不是*this吗?
我想我今天正经历着这样的日子......请有人帮忙!
using namespace std; class Buf { public: Buf( char* szBuffer, size_t sizeOfBuffer ); Buf& operator=( const Buf & ); void Display() { cout << buffer << endl; } private: char* buffer; size_t sizeOfBuffer; }; Buf::Buf( char* szBuffer, size_t sizeOfBuffer ) { sizeOfBuffer++; // account for a NULL terminator buffer = new char[ sizeOfBuffer ]; if (buffer) { strcpy_s( buffer, sizeOfBuffer, szBuffer ); sizeOfBuffer = sizeOfBuffer; } } Buf& Buf::operator=( const Buf &otherbuf ) { if( &otherbuf != this ) { if (buffer) delete [] buffer; sizeOfBuffer = strlen( otherbuf.buffer ) + 1; buffer = new char[sizeOfBuffer]; strcpy_s( buffer, sizeOfBuffer, otherbuf.buffer ); } return *this; } int main() { Buf myBuf( "my buffer", 10 ); Buf yourBuf( "your buffer", 12 ); // Display 'my buffer' myBuf.Display(); // assignment opperator myBuf = yourBuf; // Display 'your buffer' myBuf.Display(); }
【问题讨论】:
-
这是您在
*与&上需要的答案:stackoverflow.com/a/9637342/365496
标签: c++ pointers reference this