黑马程序员---在类中需要自己创建赋值构造函数的原因(特别是用于指针数据中)
来源:互联网 发布:js鼠标悬停显示div 编辑:程序博客网 时间:2024/06/06 19:16
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
class Person
{public:
Person():m_name(NULL),m_nameLen(0){};//??????????
~Person()
{
clear();//清理内存
}
Person& operator=(const Person&p);//操作符重载:赋值操作符
void setName(const char *newName);
private:
void clear()
{
if (m_name)
{
delete[] m_name;
m_nameLen = 0;
m_name = NULL;
}
}
private:
char *m_name;//当类中存在指针类型的数据时,需要赋值构造函数中先释放后赋值
int m_nameLen;
};
void Person::setName( const char *newName )
{
clear();
int newLen = strlen(newName);
m_nameLen = newLen;
m_name = new char[m_nameLen+1];//分配与字符串相同长度的内存+1
m_name[m_nameLen] = 0;//末尾加上字符串结束标志
strcpy(m_name, newName);//字符串复制
}
Person& Person::operator=( const Person&p )
{
setName(p.m_name);
return *this;
}
void testPerson()
{
Person p1, p2;
p1.setName("zhangsan");
p2.setName("lisi");
p1 = p2;
p1.setName("wangwu");
Person p3(p1);
}
0 0
- 黑马程序员---在类中需要自己创建赋值构造函数的原因(特别是用于指针数据中)
- 类一定要定义拷贝构造函数,特别是在类成员含有指针的情况(不论指针是何种类型),安全!!!
- 类中函数指针的赋值
- 构造函数用于赋值
- 黑马程序员 继承机制中构造函数的处理小结
- 黑马程序员—继承中构造函数的特点
- java中this()和super()在子类构造函数中不能共存的原因
- c++中关键字explicit用于类的构造函数
- 批注:C++中复制构造函数与重载赋值操作符总结:默认浅拷贝,带指针的需要深拷贝
- 黑马程序员----关于构造函数与的学习以及this指针在构造函数间的调用规则
- 黑马程序员_OC中类的创建
- 空指针在主函数中被赋值与在调用函数中被赋值的差别
- String类中构造函数、拷贝构造函数、赋值函数的实现
- 在类的对象的初始化中为什么需要构造函数?
- Java中,关于在子类构造函数中调用父类构造函数完成对象创建的简单分析
- 在C#的构造函数中,如何显式的先调用父类或者是自己的构造函数?
- 有时候需要啥忽略警告的方法,特别是在.m文件中
- C++学习笔记-----在重载的赋值运算函数中调用拷贝构造函数
- Git 历险记(三)——创建一个自己的本地仓库
- 二维数组中的查找
- OFMessage类
- 2014-06-09:动态设置认证IP地址
- spark问题收集(持续更新)
- 黑马程序员---在类中需要自己创建赋值构造函数的原因(特别是用于指针数据中)
- 集合
- 打击大哈哈哈
- cocosBuilder 编辑器 初用
- 快速排序
- tmlxSpreadsheet电子表格控件包含WP插件, Joomla插件
- 异常与多线程
- 公告:CSDN博客频道支持Windows Live Writer离线写博客啦
- 一起学习CMake – 01