作者ric2k1 (Ric)
看板EE_DSnP
标题[讨论] operator void *
时间Wed Dec 9 12:48:10 2009
写了一个例子,原来 operator void* 是这样 overload 的...
operator 前面加 void 或是 void* 都会有奇怪的 compile error
=======================================================
#include <iostream>
using namespace std;
class A
{
public:
A(int i = 0): _d(i) {}
operator void* () const { return (_d != 0)? (void*)this: NULL; }
private:
int _d;
};
int main()
{
A a(10);
A b(0);
if (a) { cout << "Yes" << endl; } else cout << "No" << endl;
if (b) { cout << "Yes" << endl; } else cout << "No" << endl;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.21.241
1F:推 dryman:居然是这样load..orz 12/09 13:51
2F:推 timrau:casting operator看operator名称就可以清楚知道return type 12/09 19:28
3F:推 angelicdream:我有查一些资料 在C里面 void*可以直接当作pointer用 12/10 02:45
4F:→ angelicdream:他就是只存位置在里面,而不知道他是甚麽型别 12/10 02:45
5F:→ angelicdream:所以处理reference的传递似乎可以用.就不用考虑转型 12/10 02:46
6F:→ angelicdream:但在C++还要reinterpret<void*>才可以强制转换的样子 12/10 02:47
7F:→ angelicdream:所以在处理读入档案时,就可以用void*取代char* 12/10 02:47
8F:→ angelicdream:不会有char,char array,raw data傻傻搞不清楚的事情 12/10 02:48