日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言面向对象

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言面向对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

創作人QQ:851301776,郵箱:lfr890207@163.com, 歡迎大家一起技術交流,本博客主要是自己學習的心得體會,只為每天進步一點點!

個人座右銘:
1.沒有橫空出世,只要厚積一定發。
2.你可以學歷不高,你可以不上學,但你不能不學習

一、核心點

????????做C語言和C++的都知道,C語言面向過程,C++面向對象。所以C語言要實現面向對象,核心組成是:?

????????(1)屬性:單個物體的基本特性

????????(2)方法:單個物體操作類的

????????舉例:以一個員工為例,員工的姓名、年齡、籍貫、工資、職位等為屬性。而為了增加一個員工,新增一些年齡修改或者獲取等信息的為方法。

??????? 核心:方法是用來對屬性進行操作的函數,而屬性是一個對象的基本信息

二、面向對象概念

????????把數據及對數據的操作方法放在一起,作為一個相互依存的整體——對象。對同類對象抽象出其共性,形成類。類中的大多數數據,只能用本類的方法進行處理。類通過一個簡單的外部接口與外界發生關系,對象與對象之間通過消息進行通信。程序流程由用戶在使用中決定。對象即為人對各種具體物體抽象后的一個概念,人們每天都要接觸各種各樣的對象,如手機就是一個對象。

三、屬性和方法封裝(以學生對象)

1.屬性

struct student {const void *_; //int age;char name[NAME_LENGTH]; };

? 2.方法

struct func {size_t size;void* (*ctor)(void *self, va_list *params);void* (*dtor)(void *self);void (*set_age)(int age);int (*get_age)(void);void (*set_name)(char *name);char (*get_name)(void);};

3.抽象

??????? 抽象結構體主要是為了銜接屬性和方法的

struct AbstractClass {size_t size;void* (*ctor)(void *self, va_list *params);void* (*dtor)(void *self); };

四、分配和釋放

1.分配步驟如下

(1)傳遞參數為AbstractClass。

(2)分配AbstractClass中的size大小內存,而size是屬性結構體的大小。

(3)把屬性中的void *_指向AbstractClass。

(4)使用指針遍歷棧區的參數列表(va_list)

2.釋放步驟

(1)判斷參數是否為空和對應的釋放函數

五、方法中的函數實現

(1)方法函數實現

(2)對應結構體

六、參數個數未知(即參數個數可變)時獲取函數中的參數

1.頭文件

????????stdarg.h

2.變量va_list

????????這是一個適用于 va_start()、va_arg()va_end() 這三個宏存儲信息的類型。

3.宏void va_start(va_list ap, last_arg)
?

????????這個宏初始化 ap 變量,它與 va_argva_end 宏是一起使用的。last_arg 是最后一個傳遞給函數的已知的固定參數,即省略號之前的參數。

4.宏void?va_arg(va_list ap, type)

????????這個宏檢索函數參數列表中類型為 type 的下一個參數

5.宏void va_end(va_list ap)

????????這個宏允許使用了 va_start 宏的帶有可變參數的函數返回。如果在從函數返回之前沒有調用 va_end,則結果為未定義。

七、掩碼

??????? 不上

總結

以上是生活随笔為你收集整理的C语言面向对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。