读书人

operator casting,该怎么解决

发布时间: 2013-04-20 19:43:01 作者: rapoo

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被管理员删除

读书人网 >C++

热点推荐