题外话:虽然这是基本知识,但是某次面试一紧张,竟然返回值写错了,强烈鄙视自己。。。 温故而知新,做个记号。
如果自己没有声明,编译器也会默认创建下列4个函数。且这些函数都是public和inline的。
代码如下:
class CEmpty
{
public:
CEmpty(void){...}
~CEmpty(void){...}
CEmpty( const CEmpty& rhs ){...}
CEmpty& operator=( const CEmpty& rhs ){...}
};
练习一个String的实现:
类String原型为:
class String
{
public:
String( const char *str = NULL );
~String()(void);
String( const String& rhs );
String& operator=( const String& rhs );
private:
char* m_data;
}
实现:
//#include<string.h>
inline String::String( const char* str )
{
if( str == NULL ) {
m_data = new char[1];
*m_data = '/0';
}
else {
m_data = new char[strlen(str)+1];
strcpy( m_data, str );
}
}
inline String::~String( void )
{
delete []m_data;
}
inline
String::String( const String& rhs )
{
m_data = new char[strlen(rhs.m_data)+1];
strcpy( m_data, rhs.m_data );
}
inline String&
String::operator=( const String& rhs )
{
if(this == &rhs)
return *this;
delete []m_data;
m_data = new char[strlen(rhs.m_data)+1];
strcpy(m_data, rhs.m_data);
return *this;
}
p.s. 把代码拷到vs.net里面,编译不通过。报错:“error C2533:"String::__ctor":构造函数不能有返回类型”,看了半天没看出问题。。。后来发现是class定义后面忘记加“;”了,狂汗#_#!!!
本文详细介绍了C++中构造函数与复制构造函数的基本概念,并通过具体实例演示了String类的实现过程,包括初始化、析构、复制构造及赋值操作等关键环节。


被折叠的 条评论
为什么被折叠?



