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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++之面向对象模型

發布時間:2023/12/19 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++之面向对象模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++對象模型可以概括為以下2部分:
1. 語言中直接支持面向對象程序設計的部分,主要涉及如構造函數、析構函數、虛函數、繼承(單繼承、多繼承、虛繼承)、多態等等。
2. 對于各種支持的底層實現機制。
在c語言中,“數據”和“處理數據的操作(函數)”是分開來聲明的,也就是說,語言本身并沒有支持“數據和函數”之間的關聯性。在c++中,通過抽象數據類型(abstract data type,ADT),在類中定義數據和函數,來實現數據和函數直接的綁定。
概括來說,在C++類中有兩種成員數據:static、nonstatic;三種成員函數:static、nonstatic、virtual。

C++中的class從面向對象理論出發,將變量(屬性)和函數(方法)集中定義在一起,用于描述現實世界中的類。從計算機的角度,程序依然由數據段和代碼段構成。
C++編譯器如何完成面向對象理論到計算機程序的轉化?
換句話:C++編譯器是如何管理類、對象、類和對象之間的關系
具體的說:具體對象調用類中的哪種方法,c++編譯器是如何區分,是哪個具體的類,調用哪個方法?
1)C++類對象中的成員變量和成員函數是分開存儲的
成員變量:
普通成員變量:存儲于對象中,與struct變量有相同的內存布局和字節對齊方式
靜態成員變量:存儲于全局數據區中
成員函數:存儲于代碼段中。
問題出來了:很多對象共用一塊代碼?代碼是如何區分具體對象的?
2、C++中類的普通成員函數都隱式包含一個指向當前對象的this指針。
3、靜態成員函數、成員變量屬于類
靜態成員函數與普通成員函數的區別:
靜態成員函數不包含指向具體對象的指針
普通成員函數包含一個指向具體對象的指針
具體例子:

#include <stdio.h>class Test13 { public:Test13 (int a, char ch){m_a = a;m_ch = ch;}void print (){printf ("a = %d, c = %c\n", m_a, m_ch);}static void printA(){printf ("a = %d\n", sm_b);} private:int m_a;char m_ch;static int sm_b; };int Test13::sm_b = 100;int main13_1() {printf ("size = %d\n", sizeof(Test13));Test13 t1(10,'a'), t2(20,'b');t1.print();t2.print();return 0; }class Test13_1 { public:// C++類的成員方法中有一個隱藏的 this 指針,指向當前的對象Test13_1(int a, int b){this->a = a;this->b = b;}void func(){a = 10;}void print() const; // void print (const Test13_1 * const this) private:int a;int b; };void Test13_1::print() const {// this->a = 10;printf ("a = %d, b = %d\n", this->a, this->b); }int main() {Test13_1 t(10,20), t2(30,40);t.print();t2.print();return 0; }

總結

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

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