关于CString的几种构造方式

来源:百度知道 编辑:UC知道 时间:2024/06/30 05:24:30
在一篇文章中看到如下说法:
================================================================
常见错误
1) CString s = (‘C’,10);
2) CString s = (“Hello”);
3) CString s = (“Hello”,3);
这些方式都会以CString(TCHAR ch, int nRepeat = 1)方式构造,但是构造的都不正确。但是,编译时不会提出警告。
================================================================
对于第二种,我在VC6.0中调试了一下,结构是正确的,并且不是以
CString(TCHAR ch, int nRepeat = 1)方式
而是以
CString::CString(LPCTSTR lpsz)方式

请各位指点一下,该三种情况的构造过程,到底有什么问题,谢谢!
还有:

(‘C’,10);

(“Hello”);

这种打括号的方式,是先生成临时对象然后再赋值给左边吗?
//////////////////////////
感谢你能这么及时的回答,但是问题是,调试的时候,对于1和3两种,是可以跟进去,

发现对应

CString(TCHAR ch, int nRepeat = 1)方式

构造的啊,虽然传进去的值都是错误的,真不知道是为什么?

右边这种打括号的方式没用过,有这个用法吗?

、、、、、、、、、、、、、、、、、、、

第二种由于符合CString::CString(LPCTSTR lpsz)构造,当然是按CString::CString(LPCTSTR lpsz)构造的,书上的错了...

括号的应该没有生成临时对象,因为系统完全不知道应该用谁的构造函数来生成这个临时对象啊(假设左边无关的话)