如何实现赋值运算符函数
来源:互联网 发布:java的equals方法 编辑:程序博客网 时间:2024/06/06 12:47
题目:为下面的类添加赋值运算符函数:
class CMyString
{
public:
CMyString(char* pData = NULL);
CMyString(const CMyString& str);
~CMyString(void);
private:
char* m_pData;
};
赋值运算符函数就是重载赋值运算符,相信大家即使写不对也可以大致写出来,而如果在面试中遇到这种情况,那么面试官考查的肯定是细节方面了,大致注意以下几点:
1.返回值类型应为该类的引用,因为只有这样才能连续赋值;
2.在函数结束前返回自身的引用;
3.在分配内存之前要释放自身已有空间,否则将发生内存泄漏;
4.参数类型必须是常量引用;
5.判断传入实例与当前实例是否相同。
综上,该函数应该写成如下:
CMyString& CMyString::operator=(const CMyString &str)
{
if(this==&str)
return this;
delete []m_pData;
m_pData=NULL;
m_pData=new char[strlen(str.m_pData)+1];
strcpy(m_pData,str.m_pData);
return this;
}
2 0
- 如何实现赋值运算符函数
- 如何来写好一个赋值运算符函数
- 赋值运算符函数
- 赋值运算符函数
- 赋值运算符函数
- 赋值运算符函数
- 赋值运算符函数
- 赋值运算符函数
- 赋值运算符函数
- 赋值运算符函数
- 赋值运算符函数
- 赋值运算符函数
- 赋值运算符函数
- 赋值运算符函数
- 剑指Offer算法实现之一:赋值运算符函数
- string赋值运算符、复制构造函数等实现
- 1-自己实现string类(赋值运算符函数)
- 赋值运算符重载函数
- AOP 你想干什么 IOC 你服务什么
- 博客导航
- 设置Spinner弹出框/下拉框的样式--最简单有效的方式
- Binary Tree Level Order Traversal II
- Can ORACLE use both memory_target and AIX large pages at the same time ?
- 如何实现赋值运算符函数
- 用代理测试ArrayList和LinkedList的添加和删除元素所用的时间
- 栈和队列
- SQL Server 2008“阻止保存要求重新创建表的更改”
- 《单采血浆站基本标准》
- JAVA并发编程——守护线程(Daemon Thread)
- call_user_func()与call_user_func_array函数
- Catalan数
- Java中User Thread和Daemon Thread的区别