首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

operator casting,该怎么解决

2013-04-20 
operator castingCString cs(33)MessageBox(NULL,cs,NULL,0)//CString::operator PCXSTR() const thro

operator casting


CString cs("33");
MessageBox(NULL,cs,NULL,0);

//CString::
operator PCXSTR() const throw()
{
return( m_pszData );
}

MessgageBox第二参数要求LPCSTR即const char*
为何实际进入的是PCXSTR 这个不是const char*啊,好像根本不是类型名啊

另外还有个问题,操作符重载,转换,成员函数,只要写在类内就一定是内联的吗,频繁调用也没有栈开销了?
我说的开销指现场保护,形参和局部变量开销肯定是有的
[解决办法]
VS IDE中,在不明白的符号上点鼠标右键,选转到定义。

[解决办法]
写在类里的函数不一定是内联的,编译器会根据代码的大小来决定它是否内联,不是说你指定了inline就是内联的,也不是说你不写inline就不是内联的。内联函数频繁调用是可以避免栈开销,但如果在很多地方被调用就会严重增大代码量的,它会直接在调用的地方展开,像宏一样。
[解决办法]
该回复于2013-04-14 09:19:06被管理员删除

热点排行