第十八章 18 3 3節練習

2021-06-26 05:55:10 字數 939 閱讀 6228

struct base1;

struct base2;

struct derived : public base1;

struct mi:public derived, public base2;

練習18.26

已知如上所示的繼承體系,下面對print的呼叫為什麼是錯誤的?適當修改mi,令其對print的呼叫可以編譯通過並正確執行。

mi mi;

mi.print(42);

解答:很明顯,42不能匹配vector型別。

gcc 4.9.1

note:   no known conversion for argument 1 from 『int』 to 『std::vector』
clang 3.4

error: no viable conversion from 'int' to 'std::vector'

修改一下mi:

struct mi:public derived, public base2;
這樣是使用繼承類base2中的print(double)的。

如果想要使用base1中print(int), 可以把using語句改為 using base1::print;

練習18.27

已知如上所示的繼承體系,同時假定為mi新增乙個名為foo的函式:

int ival;

double dval;

void mi::foo(double cval)

(d)

void mi::foo(double cval)

(e)

void mi::foo(double cval)

第十八章 18 2 3節練習

練習18.18 已知遊俠面的swap的典型定義 參見13.3節,第457頁 當mem1是乙個string時程式使用swap的哪個版本?如果mem1是int呢?說明在這兩種情況下名字查詢的過程。void swap t v1,t v2 解答 這裡典型定義應該指的是有乙個專為string交換而建立的swa...

第十八章 B樹

施工中施工中 基本操作主要包括 搜尋b樹,建立空b樹,插入關鍵字。18.3放出刪除關鍵字的 class program region 磁碟操作 為結點初始化對應的磁碟頁 private static node t allocate node t 磁碟寫操作 private static void d...

第十八章 定製特性

目錄 18.1 使用定製特性 18.2 定義自己的特性類 18.3 特性構造器和字段 屬性資料型別 18.4 檢測定製特性 18.5 兩個特性例項的相互匹配 18.6 檢測定製特性時不建立從attribute派生的物件 18.7 條件特性類 定製特性 利用定製特性,可宣告式地為自己的 構造新增註解來...