女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

[C++]從面向過程到面向?qū)ο?/h1>

面向過程 ——步驟化:是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實現(xiàn),使用的時候一個一個依次調(diào)用就可以了。

面向?qū)ο?/strong> ——行為化:面向?qū)ο笫前颜麄€需求按照特點、功能劃分,將這些存在共性的部分封裝成對象,創(chuàng)建了對象不是為了完成某一個步驟,而是描述某個事物在解決問題的步驟中的行為

**面向過程和面向?qū)ο蟮膬?yōu)缺點:**面向過程:

  • 優(yōu)點:性能上它是優(yōu)于面向?qū)ο蟮模驗轭愒谡{(diào)用的時候需要實例化,開銷過大。
  • 缺點:不易維護、復(fù)用、擴展

面向?qū)ο螅?/p>

  • 優(yōu)點:易維護、易復(fù)用、易擴展,由于面向?qū)ο笥蟹庋b、繼承、多態(tài)性的特性,可以設(shè)計出低耦合的系統(tǒng),使系統(tǒng)更加靈活、更加易于維護
  • 缺點:
    • 低耦合:簡單的理解就是說,模塊與模塊之間盡可能的獨立,兩者之間的關(guān)系盡可能簡單,盡量使其獨立的完成成一些子功能,這避免了牽一發(fā)而動全身的問題。
    • 性能比面向過程低

了解完面向?qū)ο蠛兔嫦蜻^程的基本概念之后,我們來看一下類和對象是什么?

**什么是類?**類,即類別:類是具有相似屬性和行為的一組實例集合

**什么是對象?**對象,即類的實例:現(xiàn)實世界是由各種各樣的事物組成,包括真實的事物和抽象的事物。例如,人、動物、汽車(真實的事物)和程序、直線(抽象的事物)等。

每一類事物都有自己特定的屬性(如大小、形狀、重量等)和行為(如生長、行走、轉(zhuǎn)彎、運算等),人們通過研究事物的屬性和行為而認(rèn)識事物。在計算機科學(xué)中將這些現(xiàn)實世界中的事物稱之為對象。

面向?qū)ο笏拇筇卣?/strong>

  • 抽象抽象是人類認(rèn)識問題的最基本手段之一。抽象是指對具體問題(對象)進(jìn)行概括,抽出一類對象的公共屬性和行為并加以描述的過程。類是對象的抽象,對象是類的特例。
  • 封裝封裝是把每個對象的數(shù)據(jù)(屬性)和操作(行為)包裝在一個類中。一旦定義了對象的屬性和行為,則必須決定哪些屬性和行為只用于表示內(nèi)部狀態(tài),哪些屬性和行為在外部是可見的。 封裝保證了模塊具有較好的獨立性,使得程序維護修改較為容易。
  • 繼承繼承是指一個新類可以從現(xiàn)有的類派生而來。新類繼承了現(xiàn)有類的特性,包括一些屬性和行為,并且可以修改或增加新的屬性和行為,使之適合具體的需要。繼承為了重用父類代碼,同時為實現(xiàn)多態(tài)性作準(zhǔn)備。
  • 多態(tài)多態(tài)性是指類中具有相似功能的同名函數(shù),并根據(jù)不同類的對象對同一消息產(chǎn)生的不同行為。

如何定義類

我們先不說多么高深的東西,大家都學(xué)過C語言吧!在C++中,我們可以使用結(jié)構(gòu)體表示類。

#include
using namespace std;
struct Stu //定義學(xué)生結(jié)構(gòu)
{
  int id;
  int age;
  char name[10];
};
int main()
{
  Stu cPlus;//前面講過在C++中可以省略,struct關(guān)鍵字
  cPlus.id = 100;
  cPlus.age = 5;
  strcpy(cPlus.name, "C語言Plus");
  cout << cPlus.id << " " << cPlus.age << " " << cPlus.name << endl;
  return 0;
}
output:100 5 C語言Plus

這種寫法大家都非常熟悉吧,不知道大家發(fā)現(xiàn)沒有,如果我要輸出學(xué)生的所有信息我就需要寫一行輸出代碼,有的伙伴會說,我們可以把輸出封裝成函數(shù),確實可以。

void showStuInfo(Stu s)
{
  cout << s.id << " " << s.age << " " << s.name << endl;
}

但是這樣做也有不方便之處,每次輸出時,需要傳入一個學(xué)生的參數(shù),麻煩。這里我們可以使用面向?qū)ο蟮乃枷耄研袨?輸出信息)也封裝到結(jié)構(gòu)體中(在C語言中是不允許的)。

struct Stu //定義學(xué)生結(jié)構(gòu)
{
  int id;
  int age;
  char name[10];
  void showStuInfo(Stu s)
{
    cout << s.id << " " << s.age << " " << s.name << endl;
  }
};
訪問方法:cPlus.showStuInfo(cPlus);

訪問成員函數(shù)的方法,和訪問成員變量的方法一樣,用成員運算符.即可,但是這里大家又會發(fā)現(xiàn)一個問題,既然是哦通過cPlus訪問的輸出函數(shù),那為啥還要傳一個cPlus進(jìn)去,不是多此一舉嗎?

確實,如果在結(jié)構(gòu)體內(nèi)部函數(shù)中,訪問自己的成員就不需要通過傳參來使用了,可以直接使用,如:

struct Stu //定義學(xué)生結(jié)構(gòu)
{
  int id;
  int age;
  char name[10];
  void showStuInfo()
{
    cout << id << " " << age << " " << name << endl;
  }
};

很簡單吧,那么同樣,對于初始化函數(shù),咱們也可以把它寫到結(jié)構(gòu)體里面去

struct Stu //定義學(xué)生結(jié)構(gòu)
{
  int id;
  int age;
  char name[10];
  void init(int sid = 0, int sage = 0, const char* sname = "NULL")
{
    id = sid;
    age = sage;
    strcpy(name, sname);
  }
  void showStuInfo()
{
    cout << id << " " << age << " " << name << endl;
  }
};


int main()
{
  Stu cPlus;//前面講過在C++中可以省略,struct關(guān)鍵字
  cPlus.init();
  cPlus.showStuInfo();


  return 0;
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 分析
    +關(guān)注

    關(guān)注

    2

    文章

    134

    瀏覽量

    33659
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4379

    瀏覽量

    64743
  • 調(diào)用
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    3385
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    C語言實現(xiàn)面向對象的方式 C++中的class的運行原理

    這里主要介紹下在C語言中是如何實現(xiàn)的面向對象。知道了C語言實現(xiàn)面向對象的方式,再聯(lián)想下,
    發(fā)表于 10-21 09:00 ?1354次閱讀

    基于C/C++面向對象的方式封裝socket通信類

    在掌握了基于 TCP 的套接字通信流程之后,為了方便使用,提高編碼效率,可以對通信操作進(jìn)行封裝,本著有淺入深的原則,先基于 C 語言進(jìn)行面向過程的函數(shù)封裝,然后再基于 C++ 進(jìn)行
    的頭像 發(fā)表于 12-26 09:57 ?1669次閱讀

    C++筆記005:用面向過程面向對象方法求解圓形面積

    鍵盤輸入的內(nèi)容流到了某某某中!面向過程程序比較簡單,只要有一些C語言的基礎(chǔ),加上對C++輸入輸出流就可以了!第二,面向
    發(fā)表于 03-05 12:59

    面向對象編程總結(jié)

    如何面向過程面向對象OOP?面向
    發(fā)表于 09-29 08:19

    什么是向對象?什么叫面向過程

    節(jié),if, for, while循環(huán)什么的,感覺也就能算一些小學(xué)就會的題目,全國計算機等級二級也就糊涂的過了。我這個專業(yè)沒學(xué)過C++,一開始不知道什么是向對象,什么叫面向過程,這可能讓
    發(fā)表于 12-17 06:28

    C++ 面向對象多線程編程下載

    C++ 面向對象多線程編程下載
    發(fā)表于 04-08 02:14 ?70次下載

    Visual C++面向對象與可視化程序設(shè)計習(xí)題解析與編程實

    Visual C++面向對象與可視化程序設(shè)計習(xí)題解析與編程實例最基本的概念出發(fā),詳細(xì)地講述了使用Visual C++進(jìn)行
    發(fā)表于 07-12 15:16 ?0次下載
    Visual <b class='flag-5'>C++</b><b class='flag-5'>面向</b><b class='flag-5'>對象</b>與可視化程序設(shè)計習(xí)題解析與編程實

    面向對象程序設(shè)計—C++語言描述_PDF版

    電子發(fā)燒友網(wǎng)站提供《面向對象程序設(shè)計—C++語言描述_PDF版.txt》資料免費下載
    發(fā)表于 09-24 15:44 ?0次下載

    面向對象的程序設(shè)計(C++

    面向對象的程序設(shè)計(C++).面向對象的基本思想 C++
    發(fā)表于 03-22 14:40 ?0次下載

    C++語言和面向對象程序設(shè)計教程

    C++語言和面向對象程序設(shè)計代表了旨在使計算機問題解更加符合人的思維活動,是軟件開發(fā)方法的一場革命;面向對象建模和
    發(fā)表于 03-02 08:00 ?6次下載

    為什么要用C語言實現(xiàn)面向對象

    不知道有多少人去了解過語言的發(fā)展史,早期C語言的語法功能其實比較簡單。隨著應(yīng)用需求和場景的變化,C語言的語法功能在不斷升級變化。 雖然我們的教材有這么一個結(jié)論:C語言是面向
    的頭像 發(fā)表于 11-05 18:05 ?1939次閱讀
    為什么要用<b class='flag-5'>C</b>語言實現(xiàn)<b class='flag-5'>面向</b><b class='flag-5'>對象</b>

    C語言是如何實現(xiàn)面向對象

    C++面向對象 的編程語言,但面向對象的概念是在C語言階段就有了,而且應(yīng)用到了很多地方,比
    的頭像 發(fā)表于 12-24 17:08 ?2w次閱讀
    <b class='flag-5'>C</b>語言是如何實現(xiàn)<b class='flag-5'>面向</b><b class='flag-5'>對象</b>的

    面向對象開發(fā)的SOLID五大基本原則

    C語言開發(fā)的應(yīng)該都知道,C面向過程開發(fā)的,而c++面向
    的頭像 發(fā)表于 10-17 14:31 ?1019次閱讀

    C語言是怎么面向對象編程

    在嵌入式開發(fā)中,C/C++語言是使用最普及的,在C++11版本之前,它們的語法是比較相似的,只不過C++提供了面向
    的頭像 發(fā)表于 02-14 13:57 ?2101次閱讀
    <b class='flag-5'>C</b>語言是怎么<b class='flag-5'>面向</b><b class='flag-5'>對象</b>編程

    面向過程面向對象的區(qū)別

    說起面向對象,大家可能會想到其他的,但是此對象非彼對象哈哈,不必驚慌,也特別好搞定。 在聽到面向
    的頭像 發(fā)表于 02-15 11:10 ?4858次閱讀
    <b class='flag-5'>面向</b><b class='flag-5'>過程</b>與<b class='flag-5'>面向</b><b class='flag-5'>對象</b>的區(qū)別