国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++ 多態(tài)與虛擬:Class 語法語義

這篇具有很好參考價值的文章主要介紹了C++ 多態(tài)與虛擬:Class 語法語義。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.object與class:在object-oriented programming編程領(lǐng)域,對象(object)有更嚴格的定義。對象是由數(shù)據(jù)結(jié)構(gòu)和用于處理該結(jié)構(gòu)的過程(稱為methods)組成的實體(instance)。這些方法由對象接收的消息激活。一個對象的內(nèi)部數(shù)據(jù)結(jié)構(gòu)與其他對象完全隔離(此屬性稱為“encapsulation”)。對象是基于模板生成的。從某個模板生成的實體(instance)的集合稱為類。有一個重要的屬性叫做繼承,它允許在現(xiàn)有類上構(gòu)建新的類,繼承現(xiàn)有類的全部或部分特性,并允許擴展新特性。有些系統(tǒng)甚至實現(xiàn)了多重繼承,允許一個類從多個父類繼承。如果你還是沒有懂,那么只要建立這樣一個概念就行了,Object就是個“東西”,是“東西”就得占空間,在計算機中就得占一定內(nèi)存,所以我們稱他為實體(instance)。上述相檔部份在描述“東西”的產(chǎn)生,它說“東西是模板產(chǎn)生的”,其實這模板(template)就是“東西”的屬性描述,也就是類(class)。需要注意的是class是一種屬性的描述,而并非實體,根據(jù)class產(chǎn)生的object才是實體。

2.instantiation:產(chǎn)生object的過程我們稱之為實例化(instantiation),根據(jù)object class(或者template)產(chǎn)生一個實體的過程就是instantiation。

3.object-oriented programming:面向?qū)ο缶幊淌且环N編程方式,它使用“對象”作為程序的基本功能單元。程序員會花費很多精力來描述對象的屬性,包括它們的數(shù)據(jù)和行為(處理數(shù)據(jù)的方法),并使用“類”的語法來展示他們的設(shè)計。當(dāng)程序開始運行時,根據(jù)設(shè)計好的類,會創(chuàng)建出實際的對象。這些對象會相互合作,共同實現(xiàn)程序的功能。此外,像int、float、long這樣的語言內(nèi)置類型也可以看作是一種類,它們用于描述數(shù)據(jù)的性質(zhì),但通常沒有相關(guān)的處理程序。

int i;  // i 是 一 個 int object.
float f;  // f 是一個 float object.

?

4.object與class的關(guān)系:現(xiàn)在讓我們以一個實例說明一下object與class的關(guān)系,假設(shè)我們的class設(shè)計如下:

 1 //CStroke描述線條應(yīng)有的特征
 2 
 3 class CStroke
 4 {
 5     //CStroke的行為
 6     public:
 7         void DrawStroke( /*....*/ ){ }; //畫線條
 8         void Serialize( /*....*/ ){ };  //檔案調(diào)用
 9     
10     //CStroke的數(shù)據(jù)
11     protected:
12         vector<Point*>m_Array; //存儲線條坐標(biāo)
13         int m_penColor;//筆的顏色
14         int m_penWidth;//筆的寬度
15         int m_penStyle;//筆的樣式
16 };

  于是每當(dāng)使用者在屏幕上畫一線條(stoke),計算機便有程序中產(chǎn)生一個CStroke object,其中有一個array準(zhǔn)備用來存儲線條上各點的坐標(biāo),以及三個int變量分別代表筆的顏色、寬度、樣式。我們必肌設(shè)計一些UIQ函數(shù),讓使用者能夠以滑動鼠標(biāo)來代替畫筆,直接在屏幕上輸出構(gòu)成線條的每一個點坐標(biāo),以下圖為例,程序產(chǎn)生了8個CStroke object。

C++ 多態(tài)與虛擬:Class 語法語義

?5. class的聲明和實現(xiàn)(?Declaration?&?Implementation):下面是 C++ class 的聲明形式(declaration),通常放在 .h?文件中

 1 class CPoint{
 2 public:
 3     CPoint(float x=0.0) :_x(x){}
 4     
 5     float x(){return _x;}
 6     
 7     void x(float xval ){_x=xval;}
 8     
 9 protected:
10     float _x; // data member
11 
12 
13 };

  class內(nèi)含有兩種東西:一個是data member(例如上面的_x),一個是menber functions(例如上述的CPoint()以及兩個x())。上例的三個member functions都直接在class中完成了實現(xiàn),所以自動成為一個inline函數(shù)。通常是函數(shù)比較簡單的我們才會這樣做,如果函數(shù)比較復(fù)雜的,我們會在class declaration 中完成member functions的聲明,而在.cpp文件中完成實現(xiàn)的部分(implementation)例如:

 1 //in hello.h
 2 
 3 class CPoint{
 4 public:
 5     CPoint(float x=0.0) :_x(x){}
 6     
 7     float x();          //只是member function的聲明
 8     
 9     void x(float xval );//只是member function的聲明
10     
11 protected:
12     float _x; // data member
13 
14 
15 };
1 //in hello.cpp
2 #include "hello.h"
3 
4 float CPoint::x(){return _x;}         //實現(xiàn)內(nèi)容
5 void CPoint::x(float xval ){_x=xval;} //實現(xiàn)內(nèi)容

6.符號命名習(xí)慣(?Naming?Convention):有一種常見的符號命名習(xí)慣是在class名稱前面加上“C”,在data members名稱前面加上"m_",至于member functions,并沒有什么常見的命名習(xí)慣。文章來源地址http://www.zghlxwxcb.cn/news/detail-856810.html

到了這里,關(guān)于C++ 多態(tài)與虛擬:Class 語法語義的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 67Class 的基本語法

    類的由來 [constructor() 方法](https://es6.ruanyifeng.com/#docs/class#constructor() 方法) 類的實例 實例屬性的新寫法 取值函數(shù)(getter)和存值函數(shù)(setter) 屬性表達式 [Class 表達式](https://es6.ruanyifeng.com/#docs/class#Class 表達式) 靜態(tài)方法 靜態(tài)屬性 私有方法和私有屬性 靜態(tài)塊 類的注意點 [ne

    2024年02月13日
    瀏覽(14)
  • 用原型實現(xiàn)Class的各項語法

    用原型實現(xiàn)Class的各項語法

    本人之前對Class一直不夠重視。平時對原型的使用,也僅限于在構(gòu)造函數(shù)的prototype上掛屬性。原型尚且用不著,更何況你Class只是原型的一顆語法糖? 直到公司開始了一個webgis項目,使用openlayers??戳讼耾penlayers的代碼,整個api都是用Class構(gòu)建的。我才意識到,對Class的使用已

    2024年01月17日
    瀏覽(16)
  • Java雜記————object.getClass()和object.class以及Java中的toString()方法的的區(qū)別

    Java雜記————object.getClass()和object.class以及Java中的toString()方法的的區(qū)別

    (這里補充一下:Class類,它就是一個類,它將普通的類作為它的對象: 每個普通類都只有一個Class對象 普通類的Class對象用getClass()方法或者class來獲取? ? ?比如? ? 同時我們還可以延伸Field屬性類,Constructor構(gòu)造器類) 需要注意的是: 直接用print之類的函數(shù)輸出一個對象會

    2024年02月11日
    瀏覽(28)
  • scss語法,使用for循環(huán)批量設(shè)置class類

    scss語法,使用for循環(huán)批量設(shè)置class類

    現(xiàn)在我們寫項目一般都是用scss寫css,相關(guān)知識可以參考這篇文章。 scss中可以使用for循環(huán)批量設(shè)置具有相同規(guī)則的類,設(shè)計圖中經(jīng)常有不同透明度的顏色,如下: 我們就可以把不同透明度的顏色都設(shè)置成一個class,當(dāng)然可以一個一個寫,但是就很麻煩,所以我們可以使用scs

    2024年02月14日
    瀏覽(17)
  • 【ES6】中構(gòu)造函數(shù)的語法糖 —— Class(類)

    【ES6】中構(gòu)造函數(shù)的語法糖 —— Class(類)

    ? ? ? ? 在現(xiàn)代前端開發(fā)中,JavaScript的面向?qū)ο缶幊坛蔀榱酥髁?。ES6引入了class,使得開發(fā)者可以更方便地使用面向?qū)ο蟮姆绞骄帉懘a,更接近傳統(tǒng)語言的寫法。ES6的class可以看作是一個語法糖,它的絕大部分功能ES5都可以做到,新的class寫法只是讓對象原型的寫法更

    2024年02月16日
    瀏覽(21)
  • Object Class Aware Video Anomaly Detection through Image Translation 論文閱讀

    Object Class Aware Video Anomaly Detection through Image Translation 論文閱讀

    文章信息: 原文鏈接:https://arxiv.org/abs/2205.01706 源代碼:無 發(fā)表于:CRV 2022 半監(jiān)督視頻異常檢測(VAD)方法將異常檢測任務(wù)表述為對學(xué)習(xí)到的正常模式的偏離進行檢測。 該領(lǐng)域中的先前工作(基于重建或預(yù)測的方法)存在兩個缺點 : 1)它們專注于低級特征,特別是整體方

    2024年01月23日
    瀏覽(17)
  • SAP Fiori開發(fā)中的JavaScript基礎(chǔ)知識15 - 原型,object,constructor,class,繼承

    SAP Fiori開發(fā)中的JavaScript基礎(chǔ)知識15 - 原型,object,constructor,class,繼承

    本文將介紹JavaScript中的核心概念 - 原型,并會介紹基于原型的應(yīng)用場景object,constructor,class,繼承。 本文會將這幾個核心概念匯總在一篇博客中,因為這些概念是觸類旁通的,希望對你有幫助。 在JavaScript中,幾乎所有的東西都是對象,每個對象都有一個 特殊的內(nèi)部屬性

    2024年04月23日
    瀏覽(43)
  • 三分鐘學(xué)習(xí)一個python小知識2-----------我的對python的類(Class)和對象(Object)的理解

    三分鐘學(xué)習(xí)一個python小知識2-----------我的對python的類(Class)和對象(Object)的理解

    Python是一種面向?qū)ο蟮木幊陶Z言,其基本的面向?qū)ο缶幊虣C制就是類(Class)和對象(Object)。 類是一種定義對象屬性和方法的藍圖或模板。 它們是一種代碼結(jié)構(gòu),可以包含屬性存儲和函數(shù)操作,從而使其更有結(jié)構(gòu)和可讀性。對象則是這些類的一個實例化結(jié)果,擁有類定義的

    2024年02月10日
    瀏覽(25)
  • Golang實現(xiàn)JAVA虛擬機-解析class文件

    Golang實現(xiàn)JAVA虛擬機-解析class文件

    原文鏈接:https://gaoyubo.cn/blogs/de1bedad.html 所需前置知識為:JAVA語言、JVM知識、Go筆記 對應(yīng)項目:jvmgo 操作系統(tǒng):Windows 11 openjdk version \\\"1.8.0_382\\\" go version go1.21.0 windows/amd64 Java虛擬機的工作是運行Java應(yīng)用程序。和其他類型的應(yīng)用程序一樣,Java應(yīng)用程序也需要一個入口點,這個入

    2024年02月04日
    瀏覽(15)
  • 《深入理解Java虛擬機》讀書筆記:Class類文件的結(jié)構(gòu)

    《深入理解Java虛擬機》讀書筆記:Class類文件的結(jié)構(gòu)

    Class類文件的結(jié)構(gòu) ? Sun公司以及其他虛擬機提供商發(fā)布了許多可以運行在各種不同平臺上的虛擬機,這些虛擬機都可以載入和執(zhí)行同一種平臺無關(guān)的的程序存儲格式——字節(jié)碼(ByteCode),從而實現(xiàn)了程序的“一次編寫,到處運行”。 ? Java虛擬機提供的語言無關(guān)性 ? “Clas

    2024年02月13日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包