欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C++必備基礎(chǔ)知識和編程規(guī)范-創(chuàng)新互聯(lián)

C++必備基礎(chǔ)知識和編程規(guī)范

“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是成都創(chuàng)新互聯(lián)公司的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個不僅審美在線,而且實用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對成都網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。

C語言是面向過程的程序設(shè)計,強(qiáng)調(diào)程序的執(zhí)行順序,自上而下,而C++是面向?qū)ο蟮某绦蛟O(shè)計,將程序看做多個對象組成,每個對象有自己的屬性(變量)和行為(函數(shù))。

2.屬性是描述對象特征的數(shù)據(jù),行為是對象能進(jìn)行的操作,如英雄聯(lián)盟里每一個英雄都有自己的屬性(生命值,法力值,防御力,***力)和行為(普通***,施放技能QWER)。

C++編程規(guī)范:

類名第一個單詞大寫,數(shù)據(jù)成員和變量小寫;

成員函數(shù)第二個單詞首字母大寫;

成員函數(shù)類外定義,類內(nèi)聲明;

Set和構(gòu)造函數(shù)的參數(shù)與數(shù)據(jù)同名,用this訪問;

一、什么是類和對象

1.類(具有共性的實體)其實是C語言結(jié)構(gòu)體的升級版,對象在程序中可以理解為編譯器為之分配了存儲空間的變量。

假如定義了一個帶函數(shù)的結(jié)構(gòu)體,然后把struct 改成class

class Stu

{

int id;

char *name;

void study()

{

cout<<name<<"正在學(xué)習(xí)C++"<<endl;

}

};

在這里class Stu就是類,用這個類定義一個變量Stu czy; czy就是對象

可以對對象進(jìn)行操作如 czy.id =1;czy.study();

在C++中后綴為*.cpp,編譯器用g++,包含頭文件#include<iostream>

輸入輸出用cin,cout,需使用命名空間using namespace std;

2.命名空間用于解決命名重復(fù)問題,自定義作用域?qū)⒍鄠€變量和函數(shù)封裝起來,如:

namespace myName

{

int num = 10;

void fun()

{

std::cout<<"in mynamespace fun\n";

}

}

然后在main函數(shù)中引用, myName::fun();

3.I/O流 cin>> 和cout<< ,就是C語言中的printf()和scanf()但是不用指定格式,cin輸入數(shù)據(jù)類型不匹配時不讀取,多個輸入之間以空格分隔,遇到空格時結(jié)束,不檢查數(shù)據(jù)長度,有緩沖區(qū)溢出的危險。所以有了cin.getline(str, sizeof(str)),類似于c語言的fgets();

4.C++中結(jié)構(gòu)名可以直接作為類型名(自動typedef),與C語言不同,c++中const修飾的值為常量,存在文字常量區(qū)。

5.缺省函數(shù)

帶有缺省參數(shù)的函數(shù),如void fun(int num = 0);

6.重載函數(shù)

允許有同名的函數(shù)出現(xiàn),但是參數(shù)不同,返回值不能作為區(qū)分的標(biāo)志,不能與缺省函數(shù)同名。

7.類型轉(zhuǎn)換

char a = char(num);

char *p = char *(num);

8.new/delete運(yùn)算符

還記得C語言中的malloc和free吧,C語言中free釋放后,指針和空間都還在,但是指針已經(jīng)沒有了對空間的操作權(quán)(好像還能讀?。?,所以應(yīng)該使其指向NULL

new和delete不是函數(shù)是運(yùn)算符

int num = 10;//棧區(qū)定義一個變量

如int *p = new int(100);//在堆區(qū)開辟了一塊4個字節(jié)的空間,里面存了一個int型的數(shù)100

而char *str = new char[100];//在堆區(qū)開辟了一塊100個字節(jié)的空間,首地址賦給str

注意new int(100) 和new char[100]的區(qū)別(坑)。

new申請的空間自動賦值為0

刪除單個變量空間delete num;,刪除數(shù)組空間delete []str;

9.引用

操作符 &,代替指針,給變量取個別名,引用不占空間

int num = 10;

int &a = num;//定義一個num的別名a

引用必須賦初值,定義后不能修改。

可作為參數(shù)和返回值,提高程序的執(zhí)行效率。

10.C++有封裝性,增加了對成員的訪問權(quán)限

private只能在類中訪問,public類中類外都能訪問,class類的成員默認(rèn)為private

還是那個類

class Stu

{

private://這一行開始之后的所有成員都是私有成員

int id;

char *name;

public://這一行開始之后的所有成員都是公有成員

void study()

{

cout<<name<<"正在學(xué)習(xí)C++"<<endl;

}

};

規(guī)范1:C++中一般將屬性設(shè)置為private, 操作設(shè)置為public,然后每一個屬性都有相應(yīng)的操作,如setId(),getId(), setName(), getName()好像面向?qū)ο缶幊潭际沁@個套路

規(guī)范2:成員函數(shù)一般放在類外定義,類內(nèi)聲明,定義時加 類名:: 指定

如void Stu::setId(int num)

11.構(gòu)造函數(shù)

特殊的成員函數(shù),用于在定義對象時進(jìn)行初始化

構(gòu)造函數(shù)名稱和類相同,可以有參也可以無參,沒有返回值(包括void),由編譯器自動調(diào)用。

如果沒有自定義構(gòu)造函數(shù)則使用默認(rèn)的構(gòu)造函數(shù)(空函數(shù)),構(gòu)造函數(shù)可重載,可缺省。

使用new定義對象時也會調(diào)用構(gòu)造函數(shù)Stu *s2 = new Stu();

12.析構(gòu)函數(shù)

構(gòu)造函數(shù)的反操作,在刪除對象或?qū)ο笸顺錾芷跁r完成反初始化操作,如清理內(nèi)存

在構(gòu)造函數(shù)前加~號,一般情況下析構(gòu)函數(shù)由編譯器執(zhí)行,使用delete時會觸發(fā)調(diào)用

一般情況下不需要定義析構(gòu)函數(shù)(沒有為類中的成員開辟堆區(qū)內(nèi)存)

如在構(gòu)造函數(shù)中有

Stu()

{

name = new char[100];

}

則必須用析構(gòu)函數(shù)

~Stu()

{

if(NULL != name)

{

delete []name;

name = NULL;

}

}

每個類只有一個析構(gòu)函數(shù),不能重載也不能有參數(shù)

13.拷貝構(gòu)造函數(shù)

特殊的構(gòu)造函數(shù),定義對象時使用已存在對象完成初始化

名稱與類相同,無返回值,參數(shù)必須是當(dāng)前類的對象的引用

使用條件:寫Stu s2 = s1;和Stu s3(s1);時會調(diào)用拷貝構(gòu)造函數(shù),而寫Stu s2 ; s2 = s1;則不會調(diào)用拷貝構(gòu)造函數(shù)。

一般情況下不需要自定義拷貝構(gòu)造函數(shù)(和析構(gòu)函數(shù)一樣沒有為類中的成員開辟堆區(qū)內(nèi)存),因為如果不定義拷貝函數(shù)編譯器只會進(jìn)行淺拷貝操作(只拷貝值,不拷貝內(nèi)存空間),釋放時會出現(xiàn)段錯誤

所以當(dāng)類中有指針且為指針分配了空間時,要自定義拷貝構(gòu)造函數(shù)進(jìn)行深拷貝。

Stu(const Stu &s1)

{

id = s1.id;

name = new char[strlen(s1.name)+1];

strcpy(name, s1.name);

}

類中有動態(tài)內(nèi)存分配時,需要自定義拷貝構(gòu)造函數(shù),否則會因為多次釋放同一段內(nèi)存導(dǎo)致段錯誤(double free or corruption)

14.const 修飾的成員函數(shù)

void setId(int num)const

{

}

稱為只讀成員函數(shù),只能讀取成員值,不能修改(除非是mutable int id)

15.對象數(shù)組:有限個相同類型的對象構(gòu)成的集合

Stu array[3]={Stu(1), Stu(2)};

16.this指針

一個隱藏的指針變量,是成員函數(shù)的第一個參數(shù),類型為對象的類型

如果對象的成員函數(shù)形參和屬性相同,可用this指定

用于規(guī)范:

void setId(int id)

{

this->id = id;

}

如果要重復(fù)調(diào)用成員如:s1.setId(10).getId();可使setId()返回對象的引用(return *this)

17.枚舉(常與switch使用)

構(gòu)造函數(shù)列表

Stu():id(10), score(99.5)

{

}

使用方法和構(gòu)造函數(shù)相同,但是可以完成特殊成員的初始化如const修飾的成員

18.const修飾的成員

只能用構(gòu)造函數(shù)列表初始化,const修飾的成員在不同的對象中可以有不同的值

19.靜態(tài)成員 static int num; static int getNum();

靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù),初始為0

靜態(tài)數(shù)據(jù)成員在類外定義,類內(nèi)聲明,和類的其它成員不在一塊內(nèi)存,不占用對象的空間,sizeof()不會計算。

屬于整個類而不是某個對象,可通過類名::對象訪問Stu::num

作用之一:代替全局變量

靜態(tài)成員函數(shù)不能使用非靜態(tài)數(shù)據(jù)成員,只能訪問靜態(tài)數(shù)據(jù)成員和全局變量, 不能使用this

為了更好地操作使用靜態(tài)數(shù)據(jù)成員而出現(xiàn)靜態(tài)成員函數(shù),在定義對象之前即可操作靜態(tài)數(shù)據(jù)成員。

20.對象成員

即類的嵌套,類似結(jié)構(gòu)體嵌套,一個類的對象作為另一個類的成員

給對象成員中的數(shù)據(jù)成員賦值要用構(gòu)造函數(shù)列表

class A

{

public:

int aNum;

A(){

aNum = 1;

cout<<"在A構(gòu)造函數(shù)中"<<endl;

}

A(int num){

aNum = num;

}

};

class B

{

public:

int bNum;

A a;

B()

{

bNum = 2;

cout<<"在B構(gòu)造函數(shù)中"<<endl;

}

B(int num):a(10)

{

bNum = num;

}

};

21.友元

在類外訪問類的私有成員

友元函數(shù),友元成員,友元類

關(guān)鍵字friend

友元函數(shù):將一個類外函數(shù)聲明為friend,可以訪問類的私有成員,友元函數(shù)定義有順序要求

友元成員:一個類的成員函數(shù)聲明為friend如:friend void Tch::getNum(),另一個類的成員函數(shù)可以訪問該類成員。

友元類:friend class Tch;

友元一般不使用,因為破壞了函數(shù)的封裝性

22.運(yùn)算符重載

也叫運(yùn)算符重載函數(shù),為適應(yīng)對象操作

int operator +(A a1, A a2)

{

return a1.num+a2.num;

}

運(yùn)算符重載實質(zhì)為函數(shù)重載,必須遵循其原則

除了成員運(yùn)算符".", "sizeof", 條件運(yùn)算符"?:", 作用域運(yùn)算符"::"之外都可以重載,重載后優(yōu)先級和結(jié)合性不變

一般重載為友元函數(shù)或成員函數(shù)

單目運(yùn)算符重載為成員函數(shù),雙目運(yùn)算符重載為友元函數(shù)

"=", "()", "[]", "->"不能重載為友元

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前標(biāo)題:C++必備基礎(chǔ)知識和編程規(guī)范-創(chuàng)新互聯(lián)
文章路徑:http://aaarwkj.com/article0/iepio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷全網(wǎng)營銷推廣、網(wǎng)頁設(shè)計公司、定制網(wǎng)站、域名注冊電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
亚洲成av人亚洲av| 亚洲乱码日韩电影网站| av中文字幕在线电影| 人妻一区二区三区久久| 国产精品亚洲欧美中字| 日韩av有码在线播放| 欧美日韩国产精品一区二区在线观看| 日本日本熟妇在线视频| 免费亚洲一区二区三区| 尤物视频在线观看官网| 在线播放亚洲一区二区三区| av在线亚洲网站区一| 日本一区二区不卡二区| 中文字幕变态另类一区二区| 欧美精品欧美激情免费区| 亚洲av偷拍一区二区三区不卡| 东京热加勒比在线播放| 午夜看片福利欧美熟女| 欧美三级欧美一级视频看| 久久香蕉国产线看观看亚洲| 一区二区中文字幕精品| 日韩在线国产精品一区| 国产av网站精品成人| 精品国产美女主播在线| 特黄日韩免费一区二区三区| 久久免费观看性生活片| 肥胖老熟女一区二区三区| 国产综合一区二区三区视频| 亚洲美女香蕉视频在线| 精品视频日韩在线观看| 欧美亚洲少妇人妻系列| 亚洲精品麻豆一区二区| 白白色最新福利视频二| 久久五月婷婷爱综合亚洲| 国内精品人妻久久毛片| 日本韩国三级视频在线观看| 蜜桃视频在线视频免费观看| 日韩电影在线观看二区| 黄色三级欧美一区二区| 午夜福利网午夜福利网| 天天操夜夜操夜夜操精品|