复制构造函数可能出现的问题
来源:互联网 发布:种植胡须多少钱 知乎 编辑:程序博客网 时间:2024/05/04 03:01
1.不增加计数器nmn_strings的值
需要更新的显式复制构造函数
StringBad::StringBad( const String & s)
{
num_strings++;
... // important stuff to go here
}
2. 字符串内容出现乱码
sailor.str=sport.str;
这里复制的并不是字符串,而是一个指向字符串的指针:sports.str指向的内存已经被sailor的析构函数释放,这将导致不确定的、可能有害的后果。程序淸单12.3中的程序生成受损的字符串,这通常是内存管理不善的表现。
解决类设计中这种问题的方法是进行深度复制(deepcopy)。也就足说,复制构造函数应当复制字符串并将副本的地址赋给str成员,而不仅仅是复制字符串地址:
StringBad::StringBad(const StringBad & st)
{
num_strings++;//handle static member update
len=st.len;//same length
str=new char [len+1];// allot space
std::strcpy(str,st.str);// copy string to new location
cout<<numstrings<<":\n"<<str
<<"\"objectcreated\n";//For Your Information
}
0 0
- 复制构造函数可能出现的问题
- 复制Tomcat可能出现的问题
- mmap函数可能出现的问题
- 复制构造函数问题
- 一点关于复制构造函数的问题
- 复制构造函数应该注意的问题
- C++复制构造函数的问题
- 构造函数复制构造函数经典问题
- 一个C++复制构造函数在不同编译器上(xcode,linux终端,VC6.0)出现结果不一致的问题
- 一个C++复制构造函数例题在不同编译器上(xcode,CodeWarrior,GUN,VC6.0)出现结果不一致的问题
- mmap函数大文件读写可能出现的问题
- createTrackbar调用高斯函数出现问题的可能原因
- C++中复制构造函数有关的一点问题
- \t\tC++中复制构造函数有关的一点问题
- 续:vector的push_back和复制构造函数问题
- 锁上可能出现的问题
- fifo可能出现的问题
- Hadoop可能出现的问题
- javascript (对象定义)工厂模式
- Jetty+Struts Demo
- 烤瓷牙和全瓷牙有什么区别
- Windows环境下Nginx+Tomcat+Redis实现应用服务器集群负载均衡和Session共享
- javascript (对象定义) 构造函数模式
- 复制构造函数可能出现的问题
- Lua 教程-02
- javascript 原型对象
- 十个优化数据库速度的技巧
- 禁止进入activity自动弹出键盘
- oracle函数
- HDU 3466Proud Merchants
- Java(Random)
- javascript (对象定义)原型模式