1樓:匿名使用者
父類--子類 這種關係,本來設計就是把 具備共性的東西放在父類裡, 不具備共性的放在子類裡.
嚴格來說,父類是不能去呼叫某個子類特有的介面的.
你這樣瞎搞 就破壞了這種構架,只能讓程式紊亂.
所以你可以這樣子:
在父類立面設計一個通用介面,然後對這個通用介面下指令, 子類收到這個訊息,大多不處理, 只有那個特殊的子類才處理這個事件.
2樓:匿名使用者
不要在父類的建構函式中定義這個指標。
因為父類的建構函式是在子類的建構函式之前,所以如果在父類建構函式中定義的這個指標,實際上指向的東西是未知的,有些編譯器會提醒,但有些編譯器可以編譯通過。
試試在abc裡進行new然後輸出,應該是可以的。
忠告:不要在基類建構函式中使用任何本類的虛擬函式,因為建構函式在虛擬函式表的構建之前,所以執行結果是未知的,基類可能會也可能並不會 如你預期的那樣呼叫子類過載的虛擬函式,
3樓:
在父類的建構函式裡寫下如下**
m_pson=new cson();
因為cson();
是子類的建構函式,它會自動呼叫,父類的建構函式,這樣會形成遞迴呼叫。由於沒有終止遞迴的條件,形成無限遞迴,最終會出現堆疊溢位錯誤。並且構造失敗。
在程式裡只有m_pson=new cson();在無限執行直至出錯。下邊的語句永遠得不到執行。
如果將子類變成普通類,則僅僅是分配空間,的new 操作,new執行時執行建構函式cson();是一個正常的函式呼叫顯然沒有問題。
真的要用類似的方式的話,學一學設計模式吧;找兩本c++ 應用方面的書看一看,
事實上,通常這樣做,這是在一個有名的c++書籍裡看到的,書名沒記住。有些地方可能多餘了。先這樣吧!好像是關於虛擬建構函式的,所謂“信封信紙模式”之類的。
class cparent
;void main()
while(cin.get()!='q');//vc++ 環境,有時需要這個語句,以便看到執行結果}
c++中的派生類,可以不定義物件直接呼叫基類的成員和呼叫自己的成員函式嘛???
4樓:匿名使用者
如果你想呼叫的來函式是基源類的靜態成員函bai
數,不定義派生類對
du象是zhi可以呼叫的,格式:base::fun();因為靜態dao成員並不是類的某個物件的成員,而是所有該類的物件所共享的。
通過類名就可以直接訪問。如果你想呼叫的不是靜態函式,不定義派生類物件是不可能的。因為你呼叫的成員函式可能會訪問到類的資料成員,而你沒有定義一個物件,也就沒有呼叫類的建構函式,也就沒有對資料成員進行初始化。
所以說必須通過類的物件來訪問其非靜態成員函式。
5樓:軟式曲奇餅
假設基類是 cbase
那呼叫基類成員函式foo()就是 cbase::foo();
呼叫當前類的成員函式方法是 this->foo();
6樓:匿名使用者
不可以吧,本人沒試過。因為你沒有定義物件的話,就無法獲得函式入口。。。static函式或許可以,自己試一下就行~~不定義物件,就相當於沒定義實體,卻要求長寬高,道理一樣。。。
7樓:匿名使用者
在類裡面定義的時候可以呼叫自己的成員函式
和父類的public和protected的函式
有關c++類繼承的問題:如果子類中沒有再次宣告父類的成員函式,那麼父類中的這個函式可以直接在子類用嗎
8樓:匿名使用者
繼承關係是一種 ..is..a 什麼的關係 比如說class animal{}
class bull:public animal{}就屬於這樣的關係 至於能不能使用父類的成員函式 就看這個成員函式在父類中是否是prviate了 如果是 就不能使用 反之就能
9樓:
只要你在父類宣告的這個函式不是private的,子類就可以不用宣告直接用。
但是子類的物件的話只能呼叫父類中public的,protected和private的都不能呼叫
c++ 用子類定義的物件 怎麼呼叫父類的成員函式?
10樓:
使用型別向上對映:
static_cast (child).show();
或定義基類引用或指標:
cfather& father = child;
father.show();
11樓:匿名使用者
這個牽涉到動態聯編的問題:首先得定義show()為虛擬函式cfather *temp = new cfather (); temp->show();
呼叫的就是父類的
cfather *temp = new cchild (); temp->show();
呼叫的就是子類的
12樓:
不一定,要按繼承方式分三種情況討論。
public繼承:
可以呼叫基類中被protected和public修飾的成員變數與成員函式。
protected繼承:
可以呼叫基類中被public修飾的成員變數與成員函式。
private繼承:
不可以呼叫基類中任何成員變數與成員函式。
13樓:仙戈雅
int main()
c++中,基類能引用派生類的成員函式嗎?能引用派生類的物件嗎?
14樓:¢幻冰
不能類的繼承是層次關係的
當然不能引用派生類的成員函式
基類不能引用派生類的物件
但基類的指標能引用派生類的物件
15樓:匿名使用者
如果基類中宣告的引數相同的同名虛擬函式,就能引用;否則不能。
基類中不能直接引用派生類的物件,同樓上的,可以把派生類當作基類來使用。
C基類中的保護成員在其派生類中可以訪問,而派生類物件不可訪問
在類外,你可以把保護成員和私有成員一樣看待。在類內部,你可以訪問基類保護成員,不可以訪問基類私有成員。公有成員則是暴露的,隨時處在風口浪尖之中。 在派生類類內的成員函式中,如果有派生類例項物件的引用或者指標。可以通過該引用或指標來訪問基類的protected成員 保護成員不能通過物件,在外部進行訪問...
C 中類的成員函式作為另類的友元函式的問題,問題在下面的中,希望解釋的詳細點,謝謝了
student不是一個類名嗎?怎麼成形參的引數型別了 類也是一個型別啊 當然可以做為一個函式的形參型別啦 這裡的c是student的物件吧,用在這裡的意思是要呼叫score吧?嗯,為了讓teacher物件呼叫student物件的私有成員 這個wc是student的物件,怎麼不能用c 為什麼要用wc ...
C如何呼叫變數名稱的類裡的函式,C 如何呼叫變數名稱的類裡的函式?
1 屬性更改 2 建構函式更改 在你的keys類中的 鍵位函式 應該呼叫公開的 屬性值,而這個屬性值應該被設有預設值。但它允許被外部更改 初學c 怎麼在一個類中呼叫另一個類的函式? 這種a窗體,b窗體互相呼叫是最差的程式設計習慣,增加了耦合度下面這個例子讓你可以解決互相呼叫的問題,a窗體中的方法,還...