請幫我看看這個程式… |
答題得分者是:dllee
|
PhotoRGB
一般會員 發表:3 回覆:5 積分:1 註冊:2002-08-17 發送簡訊給我 |
#include "stdio.h" class object_1 {
int data;
public:
void report() {
printf("> this : %p ", this);
}
}; class object_2 {
char data;
public:
void report() {
printf("> this : %p ", this);
}
}; void main() {
void * a;
void * b;
a = new object_1;
b = new object_2; (*(object_1 * )a).report(); printf("object_1 of a\n");
//^^^^^^^^^^^^^^^^^ 就是這個地方不懂… (*(object_2 * )b).report(); printf("object_2 of a\n"); }
| |||
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
引言: void main() { void * a; void * b; a = new object_1; b = new object_2; (*(object_1 * )a).report(); printf("object_1 of a\n"); //^^^^^^^^^^^^^^^^^ 就是這個地方不懂… (*(object_2 * )b).report(); printf("object_2 of a\n");一般來說,我們會寫成 a->report(); printf("object_1 of a\n"); b->report(); printf("object_2 of b\n"); 不同的地方是 -> 及 . 的不同 在程式中, a 是一個 object_1 的指標,所以 (object_1 * )a 只是「多此一舉」地再次告訴您這件事。 (*(object_1 * )a) 則是取得 a 指標所指到的「內容」,這個「內容」就是 object_1 所以可以使用 .report() 來叫用 object_1 的 report() 真不懂?為何要將程式寫得那麼難懂,是故意的嗎? 不過這段程式碼給了我一些靈感 ... 如何讓自己的程式變得複雜難懂 沒空更新的網頁...<><>< src="http://www.taconet.com.tw/dllee/gif/dlleebn.gif"> C及指標教學
http://coolsite.to/dllee | 介紹Shells
http://coolsite.to/ushells | |
引言: 一般來說,我們會寫成 a->report(); printf("object_1 of a\n"); b->report(); printf("object_2 of b\n"); 不同的地方是 -> 及 . 的不同 在程式中, a 是一個 object_1 的指標,所以 (object_1 * )a 只是「多此一舉」地再次告訴您這件事。 (*(object_1 * )a) 則是取得 a 指標所指到的「內容」,這個「內容」就是 object_1 所以可以使用 .report() 來叫用 object_1 的 report() 真不懂?為何要將程式寫得那麼難懂,是故意的嗎? 不過這段程式碼給了我一些靈感 ... 如何讓自己的程式變得複雜難懂 沒空更新的網頁...<><>< src="http://www.taconet.com.tw/dllee/gif/dlleebn.gif">C及指標教學 http://coolsite.to/dllee 介紹Shells http://coolsite.to/ushells 感謝你的回覆…因是初學者,很多地方不懂…這個程式也不是我寫的… 在一個網站上看到的…謝謝你解說的這麼詳盡…
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |