(建立於2017/12/25)
1.繼承的形式
#include //繼承
//**的重用性
using namespace std;
//人類
class human
protected:
char* name;
int age;
};//男人
class man : public human
private:
//兄弟
char* brother;
};void work(human& h)
void main()
輸出結果:
說話說話
說話請按任意鍵繼續. . .
2.向父類構造方法傳參
#include //繼承
//**的重用性
using namespace std;
class human
void say()
protected:
char* name;
int age;
};//男人
class man : public human
//泡妞
void chasing()
private:
//兄弟
char* brother;
human h;
};void main()
3.建構函式與析構函式呼叫的順序
#include //繼承
//**的重用性
using namespace std;
class human
~human()
void say()
protected:
char* name;
int age;
};//男人
class man : public human
~man()
//泡妞
void chasing()
private:
//兄弟
char* brother;
};void func()
void main()
輸出結果:
human 建構函式
man 建構函式
man 析構函式
human 析構函式
請按任意鍵繼續. . .
4.子類物件呼叫父類的成員
#include //繼承
//**的重用性
using namespace std;
class human
~human()
void say()
public:
char* name;
int age;
};//男人
class man : public human
~man()
//泡妞
void chasing()
void say()
private:
//兄弟
char* brother;
};void main()
5.多繼承
#include //繼承
//**的重用性
using namespace std;
class person;
//公民
class citizen;
//學生,既是人,又是公民
class student : public person, public citizen;
6.繼承的訪問修飾
#include //繼承
//**的重用性
using namespace std;
//繼承的訪問修飾
//基類中 繼承方式 子類中
//public & public繼承 = > public
//public & protected繼承 = > protected
//public & private繼承 = > private
////protected & public繼承 = > protected
//protected & protected繼承 = > protected
//protected & private繼承 = > private
////private & public繼承 = > 子類無權訪問
//private & protected繼承 = > 子類無權訪問
//private & private繼承 = > 子類無權訪問
//人類
class human
private:
char* name;
int age;
};//男人
class man : protected human
private:
//兄弟
char* brother;
};
7.繼承的二義性,指的是a和b同時繼承了c,c中有name屬性,那麼a和b都有了自己的name屬性,此時d同時繼承了a和b,那麼d中的name屬性究竟使用哪個?
#include //繼承
//**的重用性
using namespace std;
class a;
//虛函式(virtual function),虛函式是指乙個類中你希望過載的成員函式,當你用乙個基類指標或引用指向乙個繼承類物件的時候,你呼叫乙個虛函式,實際呼叫的是繼承類的版本。
//如果沒有這個virtual關鍵字,b.name = "aaa";會報錯,因為name屬性不明確
class a1 : virtual public a;
class a2 : virtual public a;
class b : public a1, public a2;
void main()
//使用了virtual關鍵字,使得呼叫的name屬性是子類重寫後的屬性,也就是呼叫的子類的,
//幾次賦值相當於都是給b中的name重新賦值,所以列印結果如下
輸出結果:
cccccc
ccc請按任意鍵繼續. . .
8.虛函式
//多型(程式的擴充套件性)
//動態多型:程式執行過程中,覺得哪乙個函式被呼叫(重寫)
//靜態多型:過載
//發生動態的條件:
//1.繼承
//2.父類的引用或者指標指向子類的物件
//3.函式的重寫
#include "plane.h"
#include "jet.h"
#include "copter.h"
//業務函式
void bizplay(plane& p)
void main()
jet.h
#pragma once
#include "plane.h"
//直公升飛機
class jet : public plane;
jet.cpp
#include "jet.h"
#include using namespace std;
void jet::fly()
void jet::land()
plane.h
#pragma once
//普通飛機
class plane;
plane.cpp
#include "plane.h"
#include using namespace std;
void plane::fly()
void plane::land()
copter.h
#pragma once
#include "plane.h"
//普通飛機
class copter : public plane;
copter.cpp
#include "copter.h"
#include using namespace std;
void copter::fly()
void copter::land()
9.純虛函式(抽象類)
//1.當乙個類具有乙個純虛函式,這個類就是抽象類
//2.抽象類不能例項化物件
//3.子類繼承抽象類,必須要實現純虛函式,如果沒有,子類也是抽象類
//抽象類的作用:為了繼承約束,根本不知道未來的實現
//形狀
class shape
};//圓
class circle : public shape
void sayarea()
private:
int r;
};void main()
10.介面(只是邏輯上的劃分,語法上跟抽象類的寫法沒有區別)
//可以當做乙個介面
class drawble;
11.模板函式(泛型)
/*void myswap(int& a,int& b)
void myswap(char& a, char& b)
*///發現:這兩個函式業務邏輯一樣,資料型別不一樣
template void myswap(t& a, t& b)
void main()
07 C語言 常量
常量是固定值,在程式執行期間不會改變。這些固定的值,又叫做字面量。常量可以是任何的基本資料型別,比如整數常量 浮點常量 字元常量,或字串字面值,也有列舉常量。常量就像是常規的變數,只不過常量的值在定義後不能進行修改。整數常量可以是十進位制 八進位制或十六進製制的常量。字首指定基數 0x 或 0x 表...
07 C語言記憶體分析
c語言記憶體分析 一 進製 概念 進製是一種計數方式,是數值的表現形式 4種主要的進製 十進位制 0 9 二進位制 0和1 八進位制 0 7 十六進製制 0 9 a b c d e f c語言在預設的情況下為十進位制。int num 1010 十進位制 int num 0b1100 二進位制,以0b...
學習筆記 07 C 基礎
學習c 之餘,繼續整理網路上搜尋到的資料 asp.net active server page 活動伺服器頁面 網路服務使用普遍存在的網路協議和資料格式,如http,xml進行通訊。支援這些網路標準的任何系統都支援網路服務。當網路服務和網路使用者依靠標準方式表示資料和命令 表示網路服務契約 算出網路...