有一个关于C++的面试题,我也做了一下,虽然基础,但是期间也是费了一些周折,为了理解C++的其他一些概念,我多加入了一些内容,把最终的结果放到这里。题是这样的:
类CMyString的声明如下:
class CMyString
{
public:
CMyString(char* pData = NULL);
CMyString(const CMyString& str);
~CMyString(void);
CMyString& operator = (const CMyString&str);
private:
char*m_pData;
};
请实现其赋值运算符的重载函数,要求异常安全,即当对一个对象进行赋值时发生异常,对象的状态不能改变。
在VC++ 2010中编译通过:
#include "StdAfx.h"
#include <iostream>
#include <string>
class CMyString
{
public:
//CMyString()
//{
// m_pData = NULL;
//};
//既是默认构造函数也是初始化构造函数,所以上面的代码不需要了,否则编译错误
CMyString(char* pData = NULL)
{
cout << "Enter default/initialization constructor" << endl;
m_pData