一个类型转换有点隐晦的问题
代码是这样的:
class CTest2
{
public:
operator LPCSTR&()
{
return GetName(); //红线,说不能从LPCSTR转换到LPCSTR,没错,两个都是LPCSTR
}
operator CTest2&()
{
return *this;
}
LPCSTR GetName() //如果这里变成LPCSTR&,上面就没错了,好奇C++编译器怎么还能检测出无效的引用呢
{
return name;
}
private:
const char* name;
};
class CTest2
{
public:
operator LPCSTR&()
{
return GetName(); //红线,说不能从LPCSTR转换到LPCSTR,没错,两个都是LPCSTR
}
operator CTest2&()
{
return *this;
}
LPCSTR GetName() //如果这里变成LPCSTR&,上面就没错了,好奇C++编译器怎么还能检测出无效的引用呢
{
return name;
}
private:
const char* name;
};
...全文
相关推荐
C++11显示类型转换的优点
隐式类型转换的问题隐式类型转换是C++一个让人又爱又恨的特性,使用方便,但可能会降低代码可读性,甚至会造成一些十分隐晦的错误。
php使用strpos判断字符串中数字类型子字符串出错的解决方法 原创
在PHP开发中,strpos是一个常用的函数,用于查找字符串在另一个字符串中首次出现的位置。然而在使用strpos函数时,可能会遇到一些隐晦的问题,尤其是在处理数字和字符串之间的转换时。
Python-wtfpython的中文翻译
这个项目旨在通过一系列有趣、看似违背常理的代码示例,揭示Python中的隐晦特性和陷阱,帮助开发者更好地理解和避免这些潜在问题。在Python的GUI图形用户界面开发中,了解这些微妙之处尤为重要。
C++运算符重载转换运算符(讲解详细,不容错过)
转换运算符的使用必须遵循一定的原则,以避免潜在的问题。例如,过度使用或不恰当的使用可能导致类型转换的隐晦性增加,从而降低代码的可读性和维护性。
隐晦的恋爱短信.doc
在恋爱的世界里,每个字词都可能是一份心意的传递,每条短信都可能是一次情感的触碰,因此,读懂这些"隐晦的恋爱短信",就是读懂了对方的心。


