[問題] 請問這印出的東西代表什麼??

看板C_and_CPP (C/C++)作者 (我愛阿蓉)時間16年前 (2009/06/18 02:16), 編輯推噓5(507)
留言12則, 2人參與, 最新討論串1/2 (看更多)
class D{ public: void Address(){cout<<&D::aa<<endl;} int aa; }; D d;d.Address();印出1... 我無意間忘了加上&()印出1 請問這個1是什麼意思阿? 還是沒有意義 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.207.187

06/18 04:08, , 1F
你認為你取什麼值?我認為沒有語意,你的 int aa;並不是static
06/18 04:08, 1F

06/18 04:09, , 2F
除非有個static int s; 然後在全域定義 int D::s = 0; 後,你
06/18 04:09, 2F

06/18 04:09, , 3F
存取D::s才是得到其值0。你存取&D::s才是得到其位址。你這只是
06/18 04:09, 3F

06/18 04:10, , 4F
剛好編譯器這樣給吧?下中斷點就會發現IDE應該不會給你什麼值
06/18 04:10, 4F

06/18 04:12, , 5F
補充一下,class的static data member是外部連結,跟非class的
06/18 04:12, 5F

06/18 04:12, , 6F
static是相反。
06/18 04:12, 6F

06/18 04:15, , 7F
http://tinyurl.com/lzgz2v 這篇提到的C++ class static與原本
06/18 04:15, 7F

06/18 04:15, , 8F
C的static不同,就是在說這件事。
06/18 04:15, 8F

06/18 04:26, , 10F
看第一個範例
06/18 04:26, 10F

06/18 04:55, , 11F
英文不好,看不太懂,意思是對non static做address of就會傳回
06/18 04:55, 11F

06/18 04:56, , 12F
int D::* 型態的指標?這種指標會在哪邊用到?謝謝
06/18 04:56, 12F
文章代碼(AID): #1AEJB_NE (C_and_CPP)
文章代碼(AID): #1AEJB_NE (C_and_CPP)