中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

做設計的靠譜兼職網站青島seo服務哪家好

做設計的靠譜兼職網站,青島seo服務哪家好,企業(yè)工商信息公示系統,app下載網站建設目錄 1. 初始化列表 2.explicit關鍵字 3. Static成員 3. 友元 3.1友元函數 3.2友元類 4. 內部類 5.匿名對象 1. 初始化列表 在創(chuàng)建對象時,編譯器通過調用構造函數,給對象中各個成員變量一個合適的初始值,但是這個過程并不能稱為對對…

目錄

1. 初始化列表

2.explicit關鍵字

3. Static成員?

3. 友元?

3.1友元函數

3.2友元類

4. 內部類

5.匿名對象


1. 初始化列表

在創(chuàng)建對象時,編譯器通過調用構造函數,給對象中各個成員變量一個合適的初始值,但是這個過程并不能稱為對對象中成員變量的初始化,構造函數體中的語句只能將其稱為賦初值。因為初始化只能初始化一次,而構造函數體內可以多次賦值。

對象實例化是整體定義,對象的每個成員的定義和初始化則在初始化列表中完成

初始化列表:

以一個冒號開始,接著是一個以逗號分隔的數據成員列表,每個成員變量后面跟一個放在括號中的初始值或表達式

//日期類
class Date
{
public://構造函數Date(int year, int month, int day):_year(year), _month(month), _day(day){}
private:int _year;int _month;int _day;
};
//棧類
class Stack
{
public://方法1:所以成員變量都使用初始化列表初始化Stack(int capacity = 4):_a((int*)malloc(sizeof(int)* capacity)),_capacity(capacity),_top(0){if (_a == nullptr){perror("malloc fail");exit(-1);}}//方法2:初始化列表+函數體內初始化Stack(int capacity = 4):_capacity(capacity),_top(0){_a = (int*)malloc(sizeof(int) * capacity);if (_a == nullptr){perror("malloc fail");exit(-1);}}
private:int* _a;int _capacity;int _top;
};

📖Note:

🐉每個成員變量在初始化列表中只能出現一次(初始化只能初始化一次

🐉類內包含以下成員,必須放在初始化列表位置進行初始化,不能在構造函數體內初始化

  • 引用成員變量
  • const成員變量
  • 自定義類型成員(且該類沒有默認構造函數的)

⑴對于const成員變量,在進入構造函數函數體內后,對const成員的操作是賦值操作,但是const成員變量不能被賦值修改,因此要在初始化列表進行初始化

⑵對于引用類型的變量,它在定義時必須初始化,且引用一旦引用一個實體,就不能引用其他實體,因此必須在初始化列表完成對引用變量的初始化

?正確的初始化方式:

class A
{
public:A():_val(0),_n(10),_m(_val){cout << "調用構造函數A()" << endl;}
private:int _val;const int _n;//const成員int& _m;//引用類型變量
};

🐉盡量使用初始化列表進行初始化,因為不管是否使用初始化列表,對于自定義類型成員變量,一定會先使用初始化列表初始化

對于自定義類型的成員變量,在為其初始化的時候會調用它的默認構造函數(無參構造函數,全缺省的構造函數,編譯器自動生成的構造函數),當它的默認構造函數不存在時,編譯器就會報錯,為了避免默認構造不存在的這種情況,我們需要在初始化列表中對自定義類型成員變量初始化,如果在初始化列表顯式定義了初始化,且自定義類型存在默認構造,最終的初始化結果是初始化列表的初始化結果。

🐉成員變量在類中聲明次序就是其在初始化列表中的初始化順序,與其在初始化列表中的先后次序無關

2.explicit關鍵字

構造函數不僅可以構造和初始化對象,對于單個參數或者除第一個參數無默認值其余均有默認值的構造函數,還具有類型轉換的作用

使用一個變量賦值給另一個不同類型的變量時,會發(fā)生隱式類型轉換,但是這種轉換不會改變原來變量,因為在賦值過程中,產生了一個臨時變量拷貝原來變量的值,類型轉換是對臨時變量的操作

用explicit修飾函數,將會禁止構造函數的隱式轉換.

用一個整型變量給日期類對象賦值,本來會先使用整型數據構造一個臨時變量,再用臨時變量給日期類對象賦值,即隱式的類型轉換需要兩步:構造+拷貝構造?

但實際上實際編譯器會進行優(yōu)化,將隱式類型轉換的 構造+拷貝構造 優(yōu)化成 直接構造

因此以下代碼可以通過編譯:

const Date& d3 = 2022;?

//臨時變量具有常性,因此規(guī)范的寫法應該加const修飾

Date d2 = 2023;

//編譯器優(yōu)化后直接構造,不產生臨時變量,因此可以不加const

?

3. Static成員?

聲明為static的類成員稱為類的靜態(tài)成員,用static修飾的成員變量,稱為靜態(tài)成員變量;用static修飾的成員函數,稱為靜態(tài)成員函數。靜態(tài)成員變量一定要在類外進行初始化

為什么類內的靜態(tài)成員變量需要在類外定義初始化?

靜態(tài)成員變量為所有類對象共享不屬于某個具體的對象,存放在靜態(tài)區(qū),所以不能在初始化列表初始化,靜態(tài)成員變量必須在類外定義,定義時不添加static關鍵字 ,類中只是聲明

📖Note:

  • 類靜態(tài)成員即可用:類名::靜態(tài)成員 或者 對象.靜態(tài)成員 訪問
  • 靜態(tài)成員也是類的成員,受public、protected、private訪問限定符的限制
  • 靜態(tài)成員函數沒有隱藏的this指針不能訪問任何非靜態(tài)成員
  • 靜態(tài)成員函數可以不創(chuàng)建對象直接調用

🔹類的靜態(tài)成員函數和靜態(tài)成員變量配合使用

靜態(tài)成員函數和非靜態(tài)成員函數:

靜態(tài)成員函數不可以調用非靜態(tài)的成員函數

非靜態(tài)的成員函數可以調用類的靜態(tài)成員函數

問題:實現一個類,計算機程序中創(chuàng)建出了多少個類對象

方案:類對象都是構造和拷貝構造出來的,使用一個類內的靜態(tài)成員變量,統計構造和拷貝構造的次數

對于一個類內的靜態(tài)成員變量,其生命周期是全局的,但作用域受類域的限制

📖Note:

全局的靜態(tài)變量,局部變量,類內的靜態(tài)變量,它們的生命周期相同,都是全局的,區(qū)別是作用域不同

求累加和??途W:求1+2+3+...+n_??皖}霸_??途W

class Sum{
public://構造函數Sum(){_ret += _i;++_i;}static int GetRet(){return _ret;}
private:static int _i;static int _ret;
};
//靜態(tài)成員變量的初始化
int Sum::_i = 1;
int Sum::_ret = 0;
class Solution {
public:int Sum_Solution(int n) {Sum arr[n];//創(chuàng)建一個大小為n的數組,即//需要創(chuàng)建n個對象,每個對象的創(chuàng)建都要調用構造函數初始化return Sum::GetRet();}
};

3. 友元?

3.1友元函數

友元函數是將類外定義的函數在類內進行聲明,讓類外的函數也可以對類內的成員變量進行訪問,如下例中流插入與流輸出操作符的重載中需要使用友元函數

在類內重載流插入操作符時,程序報錯原因:

類內成員函數的第一個參數默認是this指針(類類型),也就是二元操作符<<的左操作數,但實際上使用流插入操作符重載的第一個參數也就是左操作數應該是ostream類型的變量,這時即輸出流對象和隱含的this指針在搶占第一個參數的位置,所以流插入操作符不能重載成成員函數,只能重載成全局函數,但又會導致類外沒有辦法訪問成員,此時可以借助友元解決

🔷友元函數可以直接訪問類的私有成員,它是定義在類外部的普通函數,不屬于任何類,但需要在類的內部進行聲明,聲明時加friend關鍵字

class Date
{//友元聲明friend ostream& operator<<(ostream& _cout, const Date& d);friend istream& operator>>(istream& _cin, Date& d);
public://構造函數Date(int year = 1, int month = 1, int day = 1):_year(year), _month(month), _day(day){}
private:int _year;int _month;int _day;
};//流插入運算符重載
ostream& operator<<(ostream& _cout, const Date& d)
{_cout << d._year << "-" << d._month << "-" << d._day << endl;return _cout;
}
//流輸出運算符重載
istream& operator>>(istream& _cin, Date& d)
{_cin >> d._year;_cin >> d._month;_cin >> d._day;return _cin;
}

注意上面的代碼在編寫時,類的聲明是寫在運算符重載的前面,否則第二個參數就是未聲明的符號,編譯器報錯

📖Note:

  • 友元函數可以訪問類的私有(private)和保護(protected)成員,但不是類的成員函數
  • 友元函數不能使用const修飾(沒有this指針)
  • 友元函數可以在類定義的任何地方聲明,不受訪問限定符的限制
  • 一個函數可以是多個類的友元函數
  • 友元函數的調用和普通函數的調用原理相同

3.2友元類

友元類的聲明如下:

//時間類
class Time
{//聲明日期類為時間類的友元類,即在日期類中可以直接訪問Time類中的私有成員變量friend class Date;
public://構造函數Time(int hour = 1){_hour = hour;cout << "調用構造函數Time()" << endl;}
private:int _hour;
};
//日期類
class Date
{
public://構造函數Date(int year = 1, int month = 1, int day = 1):_year(year),_month(month),_day(day){}//訪問Time類中的成員變量void AccessTime(int hour){_t._hour = hour;}
private:int _year;int _month;int _day;Time _t;
};int main()
{Date d;d.AccessTime(12);//調用Date類中的成員函數,訪問Time類中的成員變量return 0;
}

友元類的特性:

🔷友元類的所有成員函數都可以是另一個類的友元函數,都可以訪問另一個類中的非公有成員

比如上述的Time類和Date類,聲明Date類是Time類的友元函數,即Date類中的所有成員函數都可以訪問Time類中的私有成員變量

🔷友元關系是單向的,不具有交換性

比如上述的Time類和Date類,在Time類中聲明Date類為其友元類,那么可以在Date類中直接訪問Time類的私有成員變量,但想在Time類中訪問Date類中私有的成員變量則不行

🔷友元關系不能傳遞

如果C是B的友元,B是A的友元,則不能說明C是A的友元

🔷友元關系不能繼承

總結:

友元提供了一種突破封裝的方式,為我們類外的函數訪問類內成員變量提供了便利,但友元會增加耦合度,破壞了封裝,因此應該合理使用。?

4. 內部類

定義:如果一個類定義在另一個類的內部,這個類就叫做內部類。

📖Note:

  • 內部類是一個獨立的類,它不屬于外部類 ,更不能通過外部類的對象去訪問內部類的成員,外部類對內部類沒有任何優(yōu)先的訪問權限
  • 內部類就是外部類的友元類,內部類可以通過外部類的對象參數來訪問外部類中的所有成員,但是外部類不是內部類的友元

特性:

  1. 內部類可以定義在外部類的public、protected、private任意一個內
  2. 注意內部類可以直接訪問外部類中的static成員,不需要外部類的對象或類名
  3. sizeof(外部類)=外部類,和內部類沒有關系

5.匿名對象

定義:對象定義時不用給對象取名字(類似匿名結構體)

對象定義的方法:

  • 普通構造:A aa();
  • 類型轉換:A aa = 2;
  • 匿名對象:A(); 或者 A(3);

📖Note:

一個匿名對象的生命周期只有它所在的這一行,下一行就會自動調用析構函數

http://www.risenshineclean.com/news/65238.html

相關文章:

  • 好的做網站的公司鄭州百度推廣托管
  • 收藏網站的鏈接怎么做媒介星軟文平臺官網
  • 網站備案都審核什么免費建一級域名網站
  • 做直播網站用什么系統優(yōu)秀營銷軟文100篇
  • 用asp做的一個網站實例源代碼網絡營銷的作用
  • 快速做自適應網站網站內容編輯
  • 網站客服托管百度廣告聯盟下載
  • cms網站有哪些網站推廣去哪家比較好
  • 裝修設計公司網站百度推廣登錄入口
  • 縣城做信息網站賺不賺錢品牌推廣策略怎么寫
  • 濟南做網站公司哪家好如何做電商 個人
  • 上海網站建設工作東莞整站優(yōu)化排名
  • 甘肅政府網站建設seo如何優(yōu)化關鍵詞
  • 什么是功能型網站有沒有免費的寫文案的軟件
  • 百度外賣網站建設與維護方法seo推廣教學
  • 做古玩生意哪些網站好互聯網營銷師證書怎么考
  • 宜興建設局 審圖中心 網站seo快速排名軟件案例
  • 做企業(yè)網站要大陸營業(yè)執(zhí)照百度小說搜索風云榜總榜
  • 專業(yè)做營銷網站百度推廣怎么推
  • 展示型網站設計方案百度域名收錄
  • 番禺人才網最新招聘信息網濰坊網站建設優(yōu)化
  • 國外免費虛擬主機惠州seo整站優(yōu)化
  • 重慶市建設工程信息網質量監(jiān)督網站seo策劃方案
  • 品牌建設完整版淄博seo
  • b2b門戶網站建設多少錢代寫
  • 1免費做網站seo搜索引擎優(yōu)化人才
  • 珊瑚絨毯移動網站建設百度推廣頁面投放
  • 二級已備案域名免費使用寧波搜索引擎優(yōu)化seo
  • 邯鄲做網站公司哪家好北京網站優(yōu)化多少錢
  • 專注高端網站設計百度百科官網