1. 程式人生 > >類的繼承中可能會引發的一處錯誤

類的繼承中可能會引發的一處錯誤

如果A是基類,B是A的派生類,那麼B將繼承A的資料和函式。例如:

class A
{
public:
 void Func1(void);
 void Func2(void);
};

class B:public A
{
public:
 void Func3(void);
 void Func4(void);
};

void main()
{
 B b;
 b.Func1(); //B從A繼承了函式Func1
 b.Func2(); //B從A繼承了函式Func2
 b.Func3();
 b.Func4();
 return;
}

上面的程式碼執行後將顯示如下的錯誤資訊:

error LNK2001: unresolved external symbol "public: void __thiscall B::Func4(void)" (

[email protected]@@QAEXXZ)
error LNK2001: unresolved external symbol "public: void __thiscall B::Func3(void)" ([email protected]@@QAEXXZ)
error LNK2001: unresolved external symbol "public: void __thiscall A::Func2(void)" ([email protected]@@QAEXXZ)
 error LNK2001: unresolved external symbol "public: void __thiscall A::Func1(void)" (
[email protected]@@QAEXXZ
)
Debug/繼承.exe : fatal error LNK1120: 4 unresolved externals

原因是聲明瞭Func1-4這4個函式,卻沒有定義他們

只需將程式改為:

class A
{
public:
 void Func1(void){};
 void Func2(void){};
};

class B:public A
{
public:
 void Func3(void){};
 void Func4(void){};
};

void main()
{
 B b;
 b.Func1(); //B從A繼承了函式Func1
 b.Func2(); //B從A繼承了函式Func2
 b.Func3();
 b.Func4();
 return;
}

相關推薦

繼承可能引發錯誤

如果A是基類,B是A的派生類,那麼B將繼承A的資料和函式。例如: class A{public: void Func1(void); void Func2(void);}; class B:public A{public: void Func3(void); void Fu

前端面試可能問到的問題()

一面可能會問到的問題? 使用鍵去獲得JavaScript物件中的值時,時間複雜度是多少?為什麼? ES6中用過的語法或者知識點 proxy相比Object.defineProperty的優勢(前面我提到了proxy) 閉包的概念以及用途 http響應狀態碼 永久重定向和臨時重定向的區別?如何實現 說出知道的

AndroidRecyclerView用法,步教你如何使用RecyclerView以及帶你走過編碼可能出現的坑~

首先,要明白RecyclerView是做什麼的?其次是為什麼要用RecyclerView?這裡牽扯到RecyclerView和ListView的區別,這裡不廢話,大家自行百度即可! 以下示例我用的Android API 29 ,啟用了AndroidX。 第一步,新增依賴 建立一個新的工程,在app/build

redis數據型四之hash的指令操作(五種數據最重要的種)

redis數據類型 hash的指令操作 1、老規矩,看看redis官方文檔怎麽寫: 這裏說呢,hashes 這種數據類型容易代表對象,實際上你可以無限制地在 hash 中放給定數量的字段。(除了可用的內存)(其實這個我理解有些模糊,是內存能夠滿足就可以無限制的放入嗎?)所

Effective JavaScript Item 63 註意異步調用可能被忽略的異常

拋出異常 data syn clas 運行 文件的 第一個 1.5 用戶 異常處理是異步編程的一個難點。在同步的代碼中,異常可以非常easy地通過try catch語句來完畢: try { f(); g(); h(); } catc

前端爬坑日記(1),你在初入vue專案開發過程可能掉進的坑!

這篇文章是記錄我在vue專案開發中遇到的各種巨坑,希望看了能對你有一些幫助,這篇文章會長期更新 1.Vue中使用sass 首先通過以下程式碼安裝sass的依賴: npm i sass-loader node-sass - s 然後在webepack.base.conf.js目錄下配置

Java父繼承的static和final

1、父類中staitic修飾的靜態方法,不能覆蓋、不能繼承。 2、父類中staitic修飾的變數或常量,能覆蓋、不能繼承。         static修飾的變數和方法,只屬於類本身,不屬於物件;當宣告一個物件時,並不產生static變數和方法的拷貝。

C#繼承建構函式的執行序列

不知道大家在使用繼承的過程中有木有遇到過呼叫建構函式時沒有按照我們預期的那樣執行呢?一般情況下,出現這樣的問題往往是因為類繼承結構中的某個基類沒有被正確例項化,或者沒有正確給基類建構函式提供資訊,如果理解在物件生命週期的這個階段發生的事情,將更利於解決此類問題。 為了例項化派生的類,必須先例項化它的基類。而

UML的關係(

前言:    UML中類圖之間的關係有許多種,我們在使用畫圖工具畫圖時常常會因為不瞭解類圖之間的關係而導致類圖畫的不夠準確,不能高效簡單地表達開發需求,學的時候就有點模模糊糊,傻傻分不清楚,現在UML

asp.net js css 等開發可能用到的- 不斷更新

一、用JQuery的Ajax載入XML並解析的注意事項1、Content-Type    很多時候無法解析就是Content-Type的問題。如果本身就是XML檔案,請跳過這一步。    動態生成的XML一定要將其設定為text/xml,否則預設就是text/html也就是普

安裝ffmpeg過程可能遇到的問題詳解

ERROR yasm not foundcd ..wget http://www.tortall.net/projects/yasm/releases/yasm-1.1.0.tar.gztar -xf yasm-1.1.0.tar.gzcd yasm-1.1.0./confi

(C++)C++繼承的建構函式和解構函式

#include <iostream> using namespace std; class Shape{ public: void Draw() {cout<<"Base::Draw()"<<endl;} void Erase() {co

發現《計算機視覺-計算理論與演算法基礎》錯誤

文章原創,轉載請註明出處 最近看雙目視覺的文獻和參考書時發現《計算機視覺-計算理論與演算法基礎》書中4.3-立體視覺攝像機定標小節中有兩個公式是錯誤的,即公式(4.31) 和公式(4.32) 這兩個等式若要成立則R1為單位矩陣,但就上下文來看,並沒有這樣的前提條件給出。

mySql資料庫一些非常規查詢,工作可能用到,備份一下以便即用即拿

這些東西純屬個人經驗,由於資歷尚淺,可能會做一些冗餘操作,歡迎指正。 1.有時候需要你去統計以下庫裡多張表的總記錄數。恰好這些表的名稱都比較類似(比如都以tb_開頭),這個時候我們可以先把所需要的表的查詢SQL全部連起來,然後再去查詢。 SELECT CONCAT(

axios拿取後端資料,資料可能有數字比較龐大的,js轉換出問題

bigint可以轉換數字 使用方法: npm i json-bigint   直接下載 然後  import JSONbig from 'json-bigint' 引入  最後在aixos的設定裡面的transformResponse屬性中轉換 transfor

C++ 繼承static成員的辨析

首先明確static的相關知識點: 知識點1:靜態變數並不是說其就不能改變值,不能改變值的量叫常量(即const), 其擁有的值是可變的 ,而且它會保持最新的值。說其靜態,是因為它不會隨著函式的呼叫和

據說這篇總結覆蓋了一般Python開發面試可能問到的大部分問題

點選上方“程式人生”,選擇“置頂公眾號”第一時間關注程式猿(媛)身邊的故事原文標題:一名pyth

java繼承呼叫子函式的問題

 class Parent  {  public void test()  {  System.out.println("the father's test");  }  public Parent()  {  System.out.println("It's father

ACM-ICPC 可能使用到的庫

other 類型 超時 erase sort 個數 頭文件 訪問 icp sort(v.first(),v.end(),cmp())unique(v.first(),v.end(),cmp()) 第三個參數可以傳入一個bool型,用來判斷是不是相等,返回unique後

那些年,我們在學習編程的過程可能走的彎路!

才會 images 斷點 後來 什麽 多少 c語言編程 微信公眾 算法 學習編程可能沒有捷徑,但一定是有彎路的,按危害程度,依次為: 1、不上機。 2、死磕“經典”。 3、玩鄙視鏈。 “不上機” 這