作者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