成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析C++對象模型問題

開發(fā) 后端
既然我們選擇了C++對象模型而不是C作為開發(fā)工具,那我們的編程思想也應該轉為C++的,而不能再延續(xù)C的Procedural方式。

在C++編程過程中,Class類型一旦被定義,它的實例對象就能被創(chuàng)建,并初始化,且能定義指針變量指向它,換句話說實例化的類就是對象,好了,下面就隨本文帶大家進入C++對象模型的知識海洋吧。

C++對象模型的思維方式解決問題,對于對C語言已經(jīng)很熟悉的人來說會很不能適應。需要一段時間來適應,不然會將代碼寫的似是而非。而且不能邯鄲學步,必須從思想上徹底的C++(OO),如果只是依葫蘆畫瓢,那結果很可能是用C++的語法編寫C式的程序。

本人曾經(jīng)犯的典型的低級的錯誤之一,就是無意識的一個類無限制的擴充,完全沒有考慮到類的多層結構(基類-派生類),需要屬性或方法便在類中增加,雖然也用到了多態(tài)、重載等一些OO的設計方式,但***這個類龐大無比,除了在當前系統(tǒng)中任勞任怨的工作外,一點復用的可能都沒有,如果另一個系統(tǒng)還需要一個類似的東西,那只能重新設計實現(xiàn)一個新的類。

并且最致命的是在維護更新時帶來得麻煩,需要不斷全部編譯不說,而且代碼在用了大量注釋后,在過一段時間讀起來也是一件重腦力勞動。及失去了C的簡潔清晰和高效,也不完全具備C++的面向對象的特性。

這根本不能叫C++程序。(我想有時間重寫一下以前代碼也會有很多收獲,溫故而知新嗎)C和C++在編程思想上是相互矛盾的。這也就是說如果你想學C++,完全可以不學C,只需要一本好書和一個不太笨的大腦再加上努力就可以了,如果你已有C的經(jīng)驗在一定的情況下反而會搗亂。#t#

本章是對對象模型的一個大略瀏覽。既然我們選擇了C++對象模型而不是C作為開發(fā)工具,那我們的編程思想也應該轉為C++的,而不能再延續(xù)C的Procedural方式。我們必須學會C++的思考方式。采用抽象數(shù)據(jù)類型或用一個多層的class體系對數(shù)據(jù)以及數(shù)據(jù)處理函數(shù)進行封裝,只有擺脫C程序的使用全局數(shù)據(jù)的慣性,才能充分發(fā)揮出C++對象模型的強大威力。

在C++中有兩種數(shù)據(jù)成員static和nonstatic,以及三種成員函數(shù)static、nonstatic和virtual。C++對象模型對內存空間和存取時間做了優(yōu)化,nonstatic的數(shù)據(jù)成員被置于類對象之內,而static數(shù)據(jù)成員被置于類對象之外。

static和nonstatic成員函數(shù)被放在類對象之外。而virtual函數(shù)是由類對象的一個指向vtbl(虛函數(shù)表)的指針vptr來進行支持。而vptr的設定和重置由類的構造函數(shù)、析構函數(shù)以及copy assignment運算符自動完成。

我們設計的每一個類幾乎都要有一個或多個構造函數(shù)、析構函數(shù)和一個Assignment運算符。他們的作用是構造函數(shù)產(chǎn)生一個新的對象并確定它被初始化。析構函數(shù)銷毀一個對象并確定它已經(jīng)被適當?shù)那謇恚ū苊獬霈F(xiàn)內存泄露的問題),Assignment運算符給對象一個新值。

這是***章的***部分,由于雷神最近幾天在做模式小組的主頁,時間周轉不開了。本想寫完整個一章再發(fā),考慮一下還是先發(fā)一部分吧。原因有2。1、***章的后半部可能又要拖上10天半個月的。

筆記實在難寫,我不愿意將筆記做成將書上的重點再抄一邊,而是喜歡盡量將自己的理解描述出來,誰知***章便如此的難以消化,已經(jīng)反復讀了3遍,還是有些夾生。所以本著對大家和自己負責的態(tài)度,雷神準備再看它3遍在說。突然發(fā)現(xiàn)自己的C++還差的很遠,好可怕呀。

簡單的對象模型 :

  1. Class Point   
  2. {   
  3. public:   
  4. Point(float xval); //1   
  5. virtual ~Point(); //2   
  6.  
  7. float x() const; //3   
  8. static int PointCount(); //4   
  9. protected:   
  10. virtual ostream& print(ostream &os) const; //5   
  11. float _x; //6   
  12. static int _point_count; //7   
  13. }  

當構造對象時便會有一個類似指針數(shù)組的東西存放著類數(shù)據(jù)成員在內存中位置的指針,還有指向成員函數(shù)的指針。為了對一個類產(chǎn)生的所有對象實體有一個標準的表達,所以對象模型采用了表格,把所有的數(shù)據(jù)成員放在數(shù)據(jù)成員表中,把所有的成員函數(shù)的地址放在了成員函數(shù)表中,而類對象本身有指向這兩個表的指針。

責任編輯:chenqingxiang 來源: NET130
相關推薦

2010-01-21 16:18:06

C++語言

2010-01-19 10:04:30

C++類

2010-01-27 15:05:04

C++標準化

2010-02-03 17:06:36

C++對象復制

2010-01-14 14:17:20

Visual C++

2009-09-03 17:18:40

C#擴展性對象模型

2011-06-20 15:13:08

Qt 對象模型

2010-01-21 09:34:57

C++語法

2010-01-27 16:05:06

C++堆棧

2009-09-15 10:12:37

LINQ To SQL

2010-01-20 10:19:55

C++數(shù)組

2010-01-27 17:16:52

C++構造函數(shù)

2010-01-18 17:48:46

C++類對象

2010-01-26 14:35:11

C++關鍵字

2021-10-19 14:04:28

C++類型數(shù)字

2010-01-27 15:46:15

學習C++效率

2010-01-14 17:13:53

C++接口

2010-02-06 17:39:52

C++ strtok

2010-01-21 13:48:30

C++基類

2020-10-23 18:46:58

C++程序類別
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩不卡合集视频 | 91精品国产综合久久小仙女图片 | 成人国产精品免费观看 | 欧美激情精品久久久久久 | 日韩精品一二三 | 午夜一级做a爰片久久毛片 精品综合 | 超碰伊人 | 亚洲一区视频在线 | 夜夜久久 | 精品久 | 日韩免费一区二区 | 日日操视频 | 巨大黑人极品videos精品 | 日韩亚洲视频 | 成人一区在线观看 | 日韩欧美国产一区二区三区 | 91在线视频一区 | 国精产品一区二区三区 | 2020天天操| 国产成人精品午夜 | 亚洲日本免费 | 99久久精品国产一区二区三区 | 久久99精品久久久久久青青日本 | 人人干人人看 | www.日韩高清| 九九在线视频 | 欧美综合一区二区三区 | 日韩精品一区二区三区中文在线 | 日韩在线播放视频 | 欧美无乱码久久久免费午夜一区 | 成人网在线 | 在线精品一区 | 久久精品视频在线播放 | 91av免费看 | 欧美一区免费在线观看 | 国产成人久久 | 久久久久久久久久久久久久av | 亚洲国产一区在线 | 综合中文字幕 | 毛片区 | 狠狠婷婷综合久久久久久妖精 |