C 類的靜態成員函式可以訪問非靜態成員嗎

時間 2021-05-09 16:03:33

1樓:輝神

靜態成員函式只是和類實現了繫結,不支援和物件繫結,就是沒有this傳參,所以沒法訪問非靜態成員,如果非要訪問,你傳乙個物件指標進去

2樓:DTF丶

不行啊,我是這麼理解的,靜態成員函式所需內存在程式執行前就分配好了,非靜態成員必須要等到這個類在堆或者棧上分了記憶體才能用,所以如果靜態成員函式訪問非靜態,可能非靜態成員還沒有記憶體。

3樓:「已登出」

是不可以的,因為靜態成員函式是全域性的,屬於整個類,而非靜態成員變數的訪問是在成員函式的this指標的基礎上進行的。如果你確實需要的話,可以給靜態成員函式定義乙個this引數,來傳入當前的例項。

4樓:王珺

不能直接訪問。可以在靜態成員函式引數中設定乙個本class型別的指標或引用,然後在呼叫時傳入this或*this來實現間接訪問。

5樓:d41d8c

當然可以啊。非成員函式也可以訪問非靜態成員啊。比如說std::

pair p; p.first就是訪問了p的非靜態成員first,std::cout << 1就是訪問了cout的非靜態成員函式operator<<。

為什麼乙個非const成員函式也可以訪問const物件的資料成員?

根據isocpp上的解釋,const函式的含義如下 A member function that inspects rather than mutates its object.A const member function is indicated by a const suffix just a...

關於c 類中的this問題,成員函式過載

薛丁格的貓 我覺得你可能有一點沒搞清楚 this應為Screen const,為一常量指標,所指位址不能改變 位址確實是不可變的,但是指標指向的內容並不是常量,this表示的是指標指向的內容,應該是可以修改的。你可以從這一方面理解一下。 C primer這附近似乎是表述有誤 By default,t...

C 中棧空間的釋放是根據根據類成員函式的生命週期還是類的生命週期?

銀河系觀察員 我一直喜歡程式設計,所以大學就選了軟體專業,想主攻電子商務和大資料探勘方面。可是我特別想知道為什麼這幾天,家門口商務酒店前老堵車呢? 渡世白玉 乙個類,只是乙個特殊的結構體而已 在C 中,類和結構體沒有明顯的區別,只是struct的預設是public的,class預設是private的...