问题描述:
今天无意中遇到一个问题,有如下程序,我想打印两个对象中的字符指针的地址来验证系统提供的赋值运算符重载是否是浅拷贝,结果直接cout字符指针输出的并不是指针的地址而是整个字符串,为什么呢?
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
using namespace std;
class ClassA
{
public:
ClassA()
{
}
ClassA(const char* pszInputStr)
{
pszTestStr = new char[strlen(pszInputStr) + 1];
strncpy(pszTestStr, pszInputStr, strlen(pszInputStr) + 1);
}
virtual ~ClassA()
{
delete pszTestStr;
}
public:
char* pszTestStr;
};
int main()
{
ClassA obj1("liitdar");
ClassA obj2;
obj2 = obj1;
cout << "addr(obj1.pszTestStr) is: " << obj1.pszTestStr << endl;
cout << "addr(obj2.pszTestStr) is: " << obj2.pszTestStr << endl;
return 0;
}
输出结果如下图: