为什么需要char*类型的参数时,都可以用CString代替

来源:百度知道 编辑:UC知道 时间:2024/06/04 00:36:17
函数中需要char *作参数的地方,一般都可以用CString来替换,不会出错。
真的都是这样吗?任何地方?

mfc怎么做到的?自动作了类型转换吗?
"在使用CString的过程中既可以把它当作一个类来使用,也可以把它当作字符串指针。"

怎么做到的??

CString中有一个protected的成员:
LPTSTR m_pchData; // pointer to ref counted string data
它是一个指向字符串的指针
在使用CString的过程中既可以把它当作一个类来使用,也可以把它当作字符串指针。
这就是MFC为我们所做的。

当然也不是完全的能够使用,比如你不能把一个CString类型的变量直接赋给一个char*,如:
CString str("how are you!");
char *a;
a=str;//这样是错的。

用作参数的时候这两种类型传递的都是变量地址,因此没有问题。