WideString的问题(BCB, 构造函数, 操作符重载, 调用原理)
来源:互联网 发布:java等级考试 编辑:程序博客网 时间:2024/06/05 15:33
问题:
相关问题: 超难问题:BCB怎样获得包含'/0'的字段数据
试下代码,发现C是错的,而D是对的:
试下代码,发现C是错的,而D是对的:
- C/C++ code
- AnsiString A; A.SetLength(6); memcpy(A.c_str(),"ZX/0/0UT",6); WideString B = A; WideString C = B.c_bstr(); WideString D; D = B.c_bstr();
解答:(1)对于 WideString B = A;
触发的是:
__fastcall WideString(const AnsiString& src);
构造函数
(2)对于 WideString C = B.c_bstr();
触发的是:
__fastcall WideString(const char* src);
该函数的实现,与构造
__fastcall WideString(const wchar_t* src, int len);
区分开; 即 WideString(const char* src); 构造的判定条件为 /0
(3)对于 WideString D;
D = B.c_bstr();
触发的是:
WideString& __fastcall operator =(BSTR rhs);
操作符重载
该重载实现与
WideString& __fastcall operator =(const char* rhs);
区分开了
验证例子:
D = B.c_bstr();
D = A.c_str();
则长度分别是6 和 2.
- WideString的问题(BCB, 构造函数, 操作符重载, 调用原理)
- 拷贝构造函数中是否可以调用重载后的赋值运算操作符
- 构造函数的重载问题
- 拷贝构造函数和赋值运算符的重载的调用次数问题
- 组合类中成员类(类指针)的构造,拷贝构造,运算符重载及析构函数的调用问题
- 深入理解函数内部原理(4)——通过new操作符调用构造函数
- 重载函数调用操作符
- 重载函数调用操作符
- 拷贝构造函数与重载赋值操作符的区别
- 复制构造函数与赋值操作符的重载
- 复制构造函数,赋值操作符重载之间的区别
- C++类的构造函数及操作符()重载
- C++拷贝构造函数的调用时机,如没有重载等号操作符,需重写使用深拷贝
- C++赋值操作符无重载情况下可能调用构造函数实现赋值的默认行为
- String 类的拷贝构造函数, 赋值操作符重载, 算数操作符重载
- 操作符重载和复制构造函数
- 转换构造函数 复制构造函数 操作符重载
- C++ 拷贝构造函数和重载赋值操作符相互调用分析
- Windows Via C/C++ Part Ⅰ Chapter3: 内核对象(1)
- 累
- const
- 11.4 Importing External Style Sheets 导入外部样式表
- gcc -l参数和-L参数
- WideString的问题(BCB, 构造函数, 操作符重载, 调用原理)
- c#中抽象类和接口的相同点跟区别
- How to create a new routine
- Sql Server 2005下的MD5、SHA1算法函数
- Salesforce和CRM
- hibernate中主键与unsaved-value关系(Batch update returned unexpected row count from update)
- POD Types Revisited
- WEB开发之旅—站在山脚下【续 1】
- json 基础