純虛函式
純虛函式是乙個在基類中說明的虛函式,在基類中沒有定義,要求任何派生類都定義自己的版本
純虛函式為各派生類提供乙個公共介面
純虛函式形式:
vortual 型別 函式名(參數列) = 0;
class point ;
class shape //抽象類
void move(point p)
virtual void rotate(int) = 0;
virtual void draw() = 0;
};
shape x; //error 抽象類不能建立物件
shape *p; //ok 可以宣告抽象類的指標
shape f(); //error 抽象類不能作為返回型別
void g(shape); //error 抽象類不能作為引數型別
shape &h(shape &) //ok 可以宣告抽象類的引用
看**:
#include "iostream"
using namespace std;
//定義乙個抽象類,含有純虛函式的類叫抽象類
class figure
;class trigle :public figure
};class square :public figure
};class circle :public figure
};//通過抽象類的純虛函式介面約定(公共介面的約定)來實現具體的業務模型的填充
//(比繼承**復用更好的乙個級別,屬於框架的設計)
void objshow(figure *pbase)
void main()
小結:
1. 如果子類繼承抽象類,只有把所有的純虛函式都實現了,才能例項化
2. 抽象類可以定義普通的函式 變數。。
多繼承
在實際開發經驗中,多繼承已經被拋棄,幾乎不被使用
多繼承帶來的**複雜性遠多於帶來的便利性
多繼承對**維護性上的影響是災難性的
在設計方法上,任何多繼承都可以用單繼承代替
**:
#include "iostream"
using namespace std;
class parent
;class inte***ce1
;class inte***ce2
;//多繼承幾乎都是這麼用的,後兩個是協議或介面
class child :public parent, public inte***ce1, public inte***ce2
int add(int i, int j)
int minus(int i, int j) };
void main()
注意的是:
c++中沒有介面的概念,c++中可以使用純虛函式實現介面,介面類中只有函式原型定義,沒有任何資料的定義。
c++中介面的封裝、設計和模組介面分工(軟體架構初步)
純虛函式為各派生類提供乙個公共介面(實際上就是介面的封裝和設計)
剩下的**是以socket通訊為例的,**如下:
#pragma once
class socketif
;
#pragma once
#include "socketprotocol.h"
class socketimp1 :public socketif
;
#include #include #include #include "socketimp1.h"
socketimp1::socketimp1(void)
socketimp1::~socketimp1(void)
int socketimp1::cltsocketinit()
//客戶端發報文
int socketimp1::cltsocketsend( unsigned char *buf , int buflen )
//客戶端收報文
int socketimp1::cltsocketrev( unsigned char *buf , int *buflen )
//客戶端釋放資源
int socketimp1::cltsocketdestory()
return 0;
}
#include "iostream"
#include "socketimp1.h"
#include "socketprotocol.h"
using namespace std;
//ö÷¿ò¼ü
void mainop01()
int mainop02(socketif *sif, unsigned char *in, int inlen, unsigned char *out, int *outlen)
void main()
{ socketif *sif = new socketimp1();
unsigned char buf[1024];
strcpy((char *)buf, "ddddddddddddddsssssssssssssssssssss");
int buflen = 10;
unsigned char out[1024];
int outlen = 10;
mainop02(sif, buf, buflen, out, &outlen);
cout<
Day15 模組的練習
匯入標準庫模組 time 時間 標準庫模組 time 時間 練習 exercise02 03 import time 1.當前時間戳 1970年1月1日到現在經過的秒數 print time.time 1574153197.3360288 2.時間元組 年,月,日,時,分,秒,星期,年的天,夏令時偏...
day 15許可權的概述
1許可權的基本概述什麼是許可權 系統對使用者所能執行的功能的限制 為什麼要有許可權 為了保護每個使用者的自己的工作環境和隱私 許可權跟使用者有什麼關係 屬主 user u 屬組 group g 其他人 others o 所有 a 對應了三個基礎許可權 r 可讀 readable 4 w 可寫 wri...
Day 15 陣列的使用
用的最多的,取出資料或者下標來操作 public class arraydemo03 列印全部的陣列元素 for int array arrays system.out.println 計算所有元素的總和 int sum 0 for int a 0 a arrays.length a system....