Re: [問題] 關於Class指標的觀念
看板C_and_CPP (C/C++)作者descent (「雄辯是銀,沉默是金」)時間11年前 (2013/09/06 15:16)推噓2(2推 0噓 18→)留言20則, 6人參與討論串13/19 (看更多)
原來還有人繼續再追阿!
提供一點後續心得。
這會影響 member function pointer 第一部份。
1 #include <iostream>
2 #include <cstdio>
3
4 using namespace std;
5
6 struct A
7 {
8 virtual void func()
9 {
10 printf("i: %d\n", i_);
11 }
12 virtual void abc()
13 {
14 printf("abc i: %d\n", i_);
15 }
16 A()
17 {
18 i_=10;
19 }
20 private:
21 int i_;
22 };
23
24
25 int main()
26 {
27 void (A::*p)() = &A::abc;
28 A a;
29 (a.*p)();
30
31 return 0;
32 }
member function pointer 的第二部份
1 #include <iostream>
2 #include <cstdio>
3
4 using namespace std;
5
6 struct A
7 {
8 virtual void func()
9 {
10 printf("i: %d\n", i_);
11 }
12 A()
13 {
14 i_=10;
15 }
16 private:
17 int i_;
18 };
19
20 struct B
21 {
22 virtual void ff()
23 {
24 printf("i: %d\n", i_);
25 }
26 B()
27 {
28 i_=10;
29 }
30 private:
31 int i_;
32 };
33
34 struct AB : public A, public B
35 {
36 virtual void func()
37 {
38 printf("i am ab\n");
39 }
40 virtual void ff()
41 {
42 printf("i am ab ff\n");
43 }
44 };
45
46 int main()
47 {
48 void (AB::*p)() = &B::ff;
49 AB ab;
50 (ab.*p)();
51
52 return 0;
53 }
有點沒完沒了的感覺, 就此先打住, 讓有興趣的人研究。
※ 引述《Feis (永遠睡不著 @@)》之銘言:
: ※ 引述《descent (「雄辯是銀,沉默是金」)》之銘言:
: <deleted>
: : struct A
: : {
: : virtual void func()
: : {
: : printf("i: %d\n", i_);
: 如果把這行改成 cout << "i: " << i_ << endl; 會發生什麼事情?
: 這是在 codepad 上的結果: http://codepad.org/AmbfEhWd
: [編輯: 阿. 我知道了! 是 hex ! 對不起. 我笨了. 想了很久 Q_Q]
: : 執行結果:
: : i: 10
: : vptr_addr:8048af8
: : func_addr:80489b4
: : i: 11
: : i: 10
: : i: 11
: : i: 10
: 此外應該還會有多重繼承的問題?
: 例如: http://codepad.org/OwbHBzOZ
: [編輯: 結果我想到一個可能的解法?... http://codepad.org/ghjxo44i ]
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.125.239.46
→
09/06 16:01, , 1F
09/06 16:01, 1F
推
09/06 16:28, , 2F
09/06 16:28, 2F
→
09/06 23:43, , 3F
09/06 23:43, 3F
→
09/06 23:44, , 4F
09/06 23:44, 4F
→
09/06 23:51, , 5F
09/06 23:51, 5F
→
09/06 23:59, , 6F
09/06 23:59, 6F
→
09/07 00:01, , 7F
09/07 00:01, 7F
→
09/07 00:01, , 8F
09/07 00:01, 8F
推
09/07 00:02, , 9F
09/07 00:02, 9F
→
09/07 00:17, , 10F
09/07 00:17, 10F
→
09/07 00:18, , 11F
09/07 00:18, 11F
→
09/07 00:18, , 12F
09/07 00:18, 12F
→
09/07 00:19, , 13F
09/07 00:19, 13F
→
09/07 00:21, , 14F
09/07 00:21, 14F
→
09/07 00:21, , 15F
09/07 00:21, 15F
→
09/07 00:21, , 16F
09/07 00:21, 16F
→
09/07 00:22, , 17F
09/07 00:22, 17F
→
09/07 00:23, , 18F
09/07 00:23, 18F
→
09/07 00:23, , 19F
09/07 00:23, 19F
→
09/07 00:25, , 20F
09/07 00:25, 20F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章