Day15 下 工程開發中的抽象類

2021-07-03 14:33:56 字數 3074 閱讀 8614

純虛函式

純虛函式是乙個在基類中說明的虛函式,在基類中沒有定義,要求任何派生類都定義自己的版本

純虛函式為各派生類提供乙個公共介面

純虛函式形式:

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....