1樓:砍侃看
你這應該指的bai
是將頭du檔案和cpp檔案分開編輯的意zhi思,很明顯了標頭檔案的內容
dao也回就是類的定義放在答一個檔案中,然後類的具體實現放在另一個檔案中,只不過類實現檔案需要include自己的標頭檔案。我理解的類外實現,應該是這個意思
c++中怎樣用派生類的成員函式呼叫基類的函式? 5
2樓:
public和protected函式可以直接呼叫。
如果被過載了可以使用 「基類::函式」 這樣的形式呼叫
如果是private就不行了,除非在基類友元自己
3樓:匿名使用者
你是指在派生類成員函式中呼叫基類函式嗎?可以通過基類的類名直接訪問,比如基類a的函式fun(),在派生類b的fun()中使用a::fun()就是呼叫基類的函式了。
c++中,派生類的成員函式呼叫基類的受保護成員~~~
4樓:匿名使用者
不是很來清楚你的意圖!自
但是在c++中派生類的成員函式bai
是可以直接呼叫基類du的zhi受dao保護成員的。
set(staff & modification);
//傳一個基類的引用,就可以在set中直接修改資料,而不是修改拷貝了。
//但是在基類中,你得把部門,名字,考勤情況等設定為protected.
5樓:匿名使用者
**發上來看看
樓上說的對
在c++中派生類的成員函式是可以直接訪問基類的保護成員和公有成員。
6樓:尋國英酆子
public和protected函式可以直接呼叫。
如果被過載了可以使用
「基類::函式」
這樣的形式呼叫
如果是private就不行了,除非在基類友元自己
派生類成員函式內呼叫基類成員函式,c++
7樓:匿名使用者
cderive2和class cderive:public之間不存在繼承關係
c++的基類如何訪問其派生類的成員變數?
8樓:
直接訪問靜態變數肯定不行,但可以變通一下,通過虛擬函式獲得這個內靜態變數
給你個容例子,這樣是不是滿足你的要求?
但這樣的話,每個繼承類都要做2件事
1. 定義靜態變數
2. 重寫虛擬函式,返回自己的靜態變數
這2件事可以通過巨集來做。mfc好象就是這麼幹的#include
class a
};class b : public a
};int main()
9樓:匿名使用者
c++中派生類對基類成員的訪問形式主要有以下兩種:
1、內部訪問:由派生類版中新增成員對基類繼承來的成權員的訪問。
2、物件訪問:在派生類外部,通過派生類的物件對從基類繼承來的成員的訪問。
三種繼承方式下,派生類對基類成員的訪問規則。
1、私有繼承的訪問規則
2、公有繼承的訪問規則
3、保護繼承的訪問規則
10樓:匿名使用者
問題1:靜態變數可以通過繼承到子類裡,但是你不可能通過子類對回x進行第二次初始化,答絕對報錯
問題2:你可以在子類裡去修改這個靜態變數,但是在修改這個值之後,即使你去調基類的foo函式,x還是你在子類裡已經修改了的值,因為子類和基類的x其實是同一個,他們是同一塊記憶體。
問題3:在基類裡沒法訪問派生類的x。你可以通過多型的特性,在子類父類裡寫一個虛擬函式來設定x的值,然後通過使用a的指標去呼叫b類裡的方法。
但是對靜態變數而言沒有什麼意義,因為他們是同一個東西,在哪修改都一樣。
11樓:幻形術
基類根本就不能
bai訪問du派生類的成員,只有基類指標在zhi虛擬dao繼承鏈上即多型的情專
況下才可以訪問派生類物件
屬的成員。
你是在b的靜態建構函式中將x初始化為2,那麼請問你宣告一個a的例項變數時,有什麼地方呼叫過了派生類b的靜態建構函式了嗎?沒有吧,所以x的值當然會是1,而不是2.
如果你宣告一個b類的例項物件變數時,就會呼叫b類的靜態建構函式,但此時也只是b類就是才會訪問出結果2,跟a類沒有任何關係。當然如果當fool為虛擬繼承時,將b類變數的地址轉換成a類的指標時,此時a類的指標就能訪問出結果2了。
12樓:戈壁與清潭
無法訪問。我想你的提問有問題吧?若派生類訪問基類應該可以。你問的可能是多型方面的問題,只有宣告的基類變數 被賦值為 擴充套件類的物件時,通過其被實現的方法訪問擴充套件類的方法才行
13樓:匿名使用者
class base
;string base::ba="fool";
class derived : public base;void main()
{cout<自己
bai編譯du下zhi
就清dao楚專了屬
14樓:匿名使用者
在c++中靜態變數在記憶體中只建立一個由所有的基類和派生類共享這個變數。所以你應該看看是否初始化有沒有問題
15樓:匿名使用者
靜態變數只有一個怎麼能兩次初始化
c++:在一個派生類的成員函式中呼叫基類成員函式「void f()」但無法通過編譯器,說明什麼?
16樓:
本題說的是無法通過copy編譯器,說明是編譯期bai錯誤,不是執行期錯誤。du
基類的zhi私有成員對派生類是不可見的,就是dao無法呼叫void f(),a中寫了void f()後,是執行期錯誤。而c是編譯期錯誤。 求分。
第二個問題, 你說的對,但是本題是無法通過編譯,那麼顯然不是你說的這種情況。
17樓:
如果說a不對的話,那可能是因為f()是成員函式而不是成員!
18樓:匿名使用者
答案有問題,應該選a
問一個c++的問題:派生類除了用基類的成員函式來訪問基類的資料成員外,還有別的方法嗎?
19樓:匿名使用者
那要看資料成員是public的還是private的,如果是public的,你自己寫的派生類也可以訪問,如果是private的,就只能通過基類自己的方法來訪問這些成員變數
派生類可以呼叫基類的私有成員嗎,派生類能否直接訪問基類的私有成員若不能,應如何實現
派生類不bai能對基類 私du有成員進行訪問。要在派生類zhi 中對基dao類成員回進行訪問,可以 1,在答派生類中對基類成員的public屬性進行訪問,以間接訪問基類的私有成員 2,在基類中將私有成員定義為protected訪問屬性,以在派生類中直接對其進行訪問。當位於類成員列表之前時,priva...
C派生類設計
include using namespace std include class document 建構函式 document string title,int num double getmoney class book public documentbook string title,int ...
C 類的公有繼承,基類的私有成員在派生類中不可見或不可訪問
在c 語言中,一個派生類可以從一個基類派生,也可以從多個基類派生。從一個基類派生的繼承稱為單繼承 從多個基類派生的繼承稱為多繼承。方式如下 公有繼承 public 私有繼承 private 保護繼承 protected 是常用的三種繼承方式。1.公有繼承 public 公有繼承的特點是基類的公有成員...