国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

面向?qū)ο?/h1>
2019-11-08 02:11:15
字體:
供稿:網(wǎng)友

一.面向?qū)ο蟮膬?yōu)點: (1)良好的可復(fù)用性 (2)易維護(hù) (3)良好的可擴(kuò)充性

二.面向?qū)ο蟮幕靖拍?對象,類和繼承

三.注意初始化列表的初始化變量順序是根據(jù)成員變量的聲明順序來執(zhí)行的 重點:初始化列表的初始化順序,如果你直接用等于那就不一樣了

四.常量必須在構(gòu)造函數(shù)的初始化列表里面初始化或者將其設(shè)置成static

五.為什么說虛擬的析構(gòu)函數(shù)是必要的? 這是為了對抗多態(tài),比如說 B類繼承A類 此時有A類指針指向B類則在析構(gòu)的時候由于是靜態(tài)聯(lián)編,所以調(diào)用的是A類的析構(gòu)函數(shù),這就有可能造成內(nèi)存泄漏 相反的,將A類的析構(gòu)函數(shù)設(shè)為virtual型,則所以體驗CObject類的派生類的析構(gòu)函數(shù)都將自動變?yōu)関irtual型 保證了任何情況下,不會出現(xiàn)由于析構(gòu)函數(shù)未被調(diào)用而導(dǎo)致的內(nèi)存泄漏。

六.析構(gòu)函數(shù)可以為virtual型,構(gòu)造函數(shù)則不能,那么為什么構(gòu)造函數(shù)不能為虛? 虛函數(shù)采用一種虛調(diào)用的辦法。虛調(diào)用是一種可以在只有部分信息的情況下工作的機(jī)制,特別允許我們調(diào)用一個只知道接口而不知道其準(zhǔn)確對象類型的函數(shù),但是如果要創(chuàng)建一個對象,你勢必要知道對象的準(zhǔn)確類型,因此構(gòu)造函數(shù)不能為虛。

七.虛函數(shù)如此有效我們是否可以把每個函數(shù)都聲明為虛函數(shù)? 不行,這是因為虛函數(shù)是有代價的,由于每個虛函數(shù)的對象都必須維護(hù)一個v表,因此在使用虛函數(shù)的時候都會產(chǎn)生一個系統(tǒng)開銷,如果僅是一個很小的類,且不想派生其他類,那么根本沒必要使用虛函數(shù)。

八.String的賦值函數(shù)注意檢查自賦值

class String{public: //普通構(gòu)造函數(shù) String(const char* str = NULL); //拷貝構(gòu)造函數(shù) String(const String &other); //析構(gòu)函數(shù) ~String(void); //賦值函數(shù) String &Operator =(const String &other);PRivate: //用于保存字符串 char* m_data;};String::~String(void){ delete[] m_data;}String::String(const char* str){ if (str == NULL) { m_data = new char[1]; *m_data = '/0'; } else { int length = strlen(str); m_data = new char[length + 1]; strcpy(m_data, str); }}String::String(const String& other){ if (other.m_data == NULL) { m_data = NULL; } else { int length = strlen(other.m_data); m_data = new char[length + 1]; strcpy(m_data, other.m_data); }}String &String::operator = (const String& other){ //const的作用 //保證可以賦值常量 //還有保證s9=s7+s8;s9等都是String對象 //檢查自賦值 if (this == &other) { return *this; } delete[] m_data; //分配新的內(nèi)存資源并復(fù)制內(nèi)容 int length = strlen(other.m_data); m_data = new char[length + 1]; strcpy(m_data, other.m_data); //返回本對象的引用 return *this;}

九. 重載和多態(tài)的區(qū)別 重載:參數(shù)列表不同 多態(tài):參數(shù)列表相同,一個接口,多種方法,接口重用

十.友元函數(shù) 例子

class Point{private: float x; float y;public: Point(float a = 0.0f, float b = 0.0f) :x(a),y(b) {}; friend float distance(Point& left, Point& right);};float distance(Point& left, Point& right){ return sqrt(((left.x - right.x) *(left.x - right.x) + (left.y - right.y) *(left.y - right.y))) ;}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

主站蜘蛛池模板: 鄂伦春自治旗| 锦屏县| 永泰县| 太和县| 兴和县| 科技| 修文县| 土默特右旗| 赞皇县| 绥化市| 十堰市| 宜黄县| 珠海市| 崇左市| 灯塔市| 伽师县| 姚安县| 达孜县| 峡江县| 北宁市| 普格县| 黄陵县| 磐安县| 石泉县| 同德县| 裕民县| 安康市| 云阳县| 鹿邑县| 梁河县| 理塘县| 江山市| 德令哈市| 酒泉市| 自治县| 宜兴市| 象州县| 西平县| 宜兴市| 高碑店市| 巴里|