C++带参数的构造函数多次初始化之怪现象
来源:互联网 发布:怎样躲避公司网络监控 编辑:程序博客网 时间:2024/06/08 06:50
昨天晚上由于无聊,突然想写一个字符串类练练手。当写到用wchar_t * 初始化字符串的构造函数时,突发奇想,如果同一字符串类两次用不同的wchar_t * 进行初始化(第一次是初始化,第二次应该是赋值,只是该类不存在重载赋值运算符,故而会再次调用带wchar_t * 参数的构造函数)会发生什么情况,于是操起VS2010演示起来,废话不多说,看程序。
程序执行结果是什么都没有。开始以为只是因为带wchar_t * 参数的构造函数没有delete内部堆指针造成的内存泄露,但是通过调试发现并不完全是那么回事。刚开始第一次初始化czString时一切正常,到第二次赋值时,调试器跟进了构造函数内部,此时发现监视的成员变量m_ulCharArrayLength的值为很大的数,并且m_pOriginalCharArray的指针也为无效指针,于是初步判定可能是正在构造一个临时对象,紧接着用“第二次赋值”字符串初始化了临时对象。但奇怪的是,当临时对象初始化完毕之后,紧跟着czString对象就调用了析构函数,从而将其内部的字符串析构掉了。于是printf什么都不出现了。这种现象的原因目前还没有弄清楚,贴出来是希望大家一起讨论一下,看看有哪位高人能够指点一二。
- C++带参数的构造函数多次初始化之怪现象
- 带参数的构造函数
- 带参数的构造函数
- 带参数的构造函数
- 带参数的构造函数
- 三角形类之带参数的构造函数
- C++ 基类构造函数带参数的继承方式及派生类的初始化
- C++ 几种对象数组初始化(带参数的构造函数)
- 第五周任务一之默认构造函数和带参数的构造函数
- 构造函数中指针参数的初始化
- 【C/C++】构造函数的初始化列表
- 带参数的构造函数.cpp
- C#带参数的构造函数
- Qt 带自定义参数的构造函数
- 带默认参数的构造函数
- 7.23带参数的构造函数
- 三角形类的构造函数-使用带参数构造函数
- 初始化基类-带参数的构造器
- 是什么造就了伟大的程序员?
- xcode4的界面工程和导航条不见的问题
- VS2008中如何改变对话框的背景颜色
- 程序员能力矩阵 你属于哪一层
- js专题
- C++带参数的构造函数多次初始化之怪现象
- Linux环境进程间通信-管道和命名管道
- 关于unknown character '0xa1'的错误
- 删除html标记
- OnInitDialog()的原理
- hdu 1964(插头DP一条回路)
- Java中的String数据类型(转)
- new String[] 与new String[] {""}的区别
- 24小时制的dateformat