c中,基類是抽象類(有純虛擬函式),在派生類(公有繼承)中,能不能呼叫初始化基類物件

2021-04-19 01:28:37 字數 2440 閱讀 1340

1樓:匿名使用者

能呼叫如果創bai建物件是b b(2,3),那du麼就會執行b(int m, int n=0)這個zhi建構函式dao,進而顯式呼叫了基類a的構專造函式a(int a),因屬為初始化列表裡寫明瞭a(m)構造方式

假如沒有這個a(m)語句,那麼就會呼叫a的預設建構函式,但a裡沒有寫a() {},所以就會報錯:沒有適合的預設建構函式可用

派生類如果繼承了抽象基類中的純虛擬函式,而在該派生類中沒有對此純虛擬函式進行定義 ......

2樓:

這應該是筆誤吧,如果派生類中沒有對基類的純虛擬函式進行定義,那麼派生類自身也就成了一個抽象類,無法被例項化。如果也沒有進行宣告,那繼承下來的函式還是純虛擬函式。因為它明確地告訴了編譯器函式有操作名稱,但是指向無效地址。

如果在派生類中對基類的純虛擬函式進行了重新宣告或者定義,那麼此函式的操作指標就被指到了新的地址,如果這個新的操作地址沒有被指向0,那就不再是一個純虛擬函式,派生類也就不再是抽象類。

派生類中完全實現基類中所有的的純虛擬函式,否則,派生類也變成了抽象類,不能例項化物件什麼意思?

3樓:匿名使用者

基類中有純虛擬函式,如virtual int fun() = 0;

在派生類中要實現 這個純虛擬函式。

如果派生類中沒有實現這個函式,那麼等於派生類中也有了,virtual int fun() = 0;

那麼派生類也變成了抽象類,不能例項化。

抽象類:有純函式的類。

4樓:匿名使用者

純虛擬函式就是隻有宣告且=0的

派生類就是它的子類嘛,如果沒有完全實現父抽象類(完全抽象類)中的所有抽象方法(虛方法與純屬虛方法),那麼子類就成一個抽象類。

抽象類是不能直接例項化的。

這裡的抽象意思就是不是實際的。沒有完全實現的。或者說還是半成品。

c++中抽象類中可以沒有純虛擬函式麼?

5樓:阿彌陀佛

在一個抽象類的派生類中,如果沒有重新定義基類的純虛擬函式,那麼,這個類仍然是抽象類

但這個抽象類繼承了基類的純虛擬函式

6樓:再一次的覺醒

抽象類的定義是什麼?是擁有純虛擬函式的類才是抽象類,所以不能沒有,看定義就知道了

7樓:_指丨染蒼年丶

你都說是抽象類了。。。

一個關於c++純虛擬函式和抽象類的題

8樓:匿名使用者

a的想法確實是錯了,選a沒問題,但c也錯了a:純虛擬函式在類中可以有具體的實現**,但是有純虛擬函式的類無法有具體的實現而已.純虛擬函式在派生類中必須被重新定義,但純虛擬函式的實現**還是可以被派生類用 baseclass::

thevirtualfn();這種方式呼叫.

b:沒問題,具有純虛擬函式的類確實是抽象類.

c:派生類有權力將從基類繼承來的純虛擬函式再次定義為純虛擬函式,也有權力完全不理它.因此派生類可以再次成為抽象類.

d:沒問題.但實際上d也不夠周全,純虛擬函式的實現並非一定由派生類給出的,基類也可以給出一個實現,只不過外界能呼叫到的一定是派生類的實現而已.

9樓:匿名使用者

的確 答案錯了 該選c 對於a 純虛擬函式要在派生類來實現具體功能,但是一個抽象類可以派生多個類,所以沒有具體的實現,體現了c++多型性

10樓:匿名使用者

選c啊!!!ccccccccccccccccccccccccc

信我。我現在學c++,應該剛學完!信我!選c

在c++類中,有一種類不能生成物件只能被繼承,稱之為虛基類還是抽象類???

11樓:匿名使用者

在c++類中,有一種類不能生成物件只能被繼承,稱之為________。

答案應該是 「抽象類」 或者 「包含純虛擬函式的類」 。

12樓:匿名使用者

兩個概念沒有直接等價關係

抽象類不能被例項化,裡面一定包含純虛擬函式

虛基類是虛繼承的父類,class b:virtual a{}; a是虛基類

13樓:匿名使用者

可以回答抽象類/純虛類,含有純虛擬函式的類。

class a;

c++中,派生於一個抽象基類的派生類必須全部繼承和定義抽象基類中的所有函式嗎?

14樓:匿名使用者

不是所有虛函來

數,而是所有的純源虛擬函式,其它的函式可以不重新定義。

如果派生類沒有重新定義所有的基類的純虛擬函式,那麼該類也將是抽象類。

而如果只是沒有重定義虛擬函式(不是純虛擬函式),那只是沒有實現多型性,並不是不能定義物件。

抽象類中的已經宣告方法0為純虛擬函式,其他方法不宣告

一個是虛擬函式,一個是純虛擬函式。另外你的函式忘寫返回值了。純虛擬函式可以讓類先具有一個操作名稱,而沒有操作內容,讓派生類在繼承時再去具體地給出定義。凡是含有純虛擬函式的類叫做抽象類。這種類不能宣告物件,只是作為基類為派生類服務。除非在派生類中完全實現基類中所有的的純虛擬函式,否則,派生類也變成了抽...

c中如何呼叫基類的虛擬函式,c 中 解構函式中可以呼叫虛擬函式麼

下面是例子 include using namespace std class a a virtual void f 一個類的物件中是沒有關於普通成員函式的指標的slot,只有成員變數還有虛表指標,類的成員函式的 定義在pe檔案的 區,所以從程式載入時,就已經分配好了記憶體用於存放這些 執行時所需要...

虛擬函式和虛基類的區別是什麼啊,c 中虛擬函式與純虛擬函式的區別是什麼?

虛擬函式 虛基類,它們都和virtual有關,這兩個帶有虛字的定義容易使人混淆,回下面先從作用答 上來解釋這兩個定義的區別 1.虛擬函式是用於多型中virtual修飾父類函式,確保父類指標呼叫子類物件時,執行子類函式的。2 虛基類是用來在多繼承中,如果父類繼承自同一個父類,就只例項化一個父類 說的有...