雷火电竞-中国电竞赛事及体育赛事平台

歡迎來(lái)到入門(mén)教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

C++基礎(chǔ)入門(mén)教程(一):基礎(chǔ)知識(shí)大雜燴

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊:

我很郁悶,這本書(shū)果然講得很詳細(xì),我在看第二章,看完要深呼吸,實(shí)在太詳(lao)細(xì)(dao)了。
不過(guò)這很好,后面難一些的內(nèi)容應(yīng)該會(huì)不錯(cuò)~
 
那么,這章只是作為預(yù)覽的章節(jié),我抽出一些稍微比較有營(yíng)養(yǎng)的內(nèi)容記錄一下吧~
 
注意:本系列教程不適合無(wú)任何編程語(yǔ)言基礎(chǔ)的朋友,只是作為C++基礎(chǔ)的一種補(bǔ)充。
教程內(nèi)容基于《C++ Primer Plus》一書(shū),適合初學(xué)者,熟手請(qǐng)直接忽略。

1. 如果你不注釋?zhuān)敲?,我?huì)把你注釋掉~(yú)!

C++的注釋有2種,
第一種,單行注釋?zhuān)蔷褪牵?/
如下代碼:

復(fù)制代碼 代碼如下:

    // 呵呵
    Test* t = new Test();;

//后面跟著的就是注釋內(nèi)容,屬于單行注釋
所謂的注釋?zhuān)褪桥c代碼無(wú)關(guān)的內(nèi)容,與編譯器無(wú)關(guān)的內(nèi)容,只是給我們自己或者其他人看的。
就像是說(shuō)明書(shū)。
 
另外還有一種注釋?zhuān)蔷褪牵?* */
如下代碼:
復(fù)制代碼 代碼如下:

/*
呵呵
你剛剛說(shuō)什么來(lái)著?
*/
Test* t = new Test();;

/**/中間可以放一段文字,這是多行注釋。
 
這廢話(huà)就不多說(shuō)了。

另外要說(shuō)一下廢話(huà)(小若:剛剛誰(shuí)說(shuō)廢話(huà)不多說(shuō)來(lái)著?),那就是注釋真的很重要~!
不要聽(tīng)那么大牛說(shuō)什么變量名字取得好、函數(shù)名字取得好就不需要注釋。
每個(gè)人對(duì)“好”是有不同的評(píng)價(jià)的,所以注釋很重要,誰(shuí)喜歡看那些一整頁(yè)都沒(méi)有注釋的代碼呢?
不管是英文注釋還是中文注釋?zhuān)寄茏屍渌嘶蛘咦约阂宰羁斓乃俣攘私饽扯未a的意思。
 
沒(méi)錯(cuò),如果遇到那些自以為自己寫(xiě)得一手完美代碼的人,一個(gè)注釋都不寫(xiě)的,那么,你就把他整個(gè)人給注釋掉吧~!

2.頭文件

語(yǔ)言本身除了語(yǔ)法之外,最重要的應(yīng)該就是各種庫(kù)了。
各種庫(kù),也就是它的各種功能,我們只要調(diào)用一些函數(shù)就能完成特定的功能。
比如打印文字、讀寫(xiě)文件什么的。
 
C++提供了很多這樣的庫(kù),它們被分別存放在不同的文件中。
如果想使用這些庫(kù)里面的函數(shù),就要包含這些庫(kù)的頭文件。
 
所以,我們經(jīng)常會(huì)看到下面的代碼:

復(fù)制代碼 代碼如下:

#include "hello.h"
#include <iostream>

#include就是用來(lái)包含頭文件的,包含頭文件之后就能使用某個(gè)庫(kù)的函數(shù)了。
那么,為什么有些頭文件是.h結(jié)尾,有些又沒(méi)有呢?
其實(shí)現(xiàn)在C++默認(rèn)規(guī)定是不需要.h結(jié)尾的,.h結(jié)尾只是以前留下來(lái)的習(xí)慣~
但,其實(shí)現(xiàn)在大家在新建類(lèi)文件的時(shí)候還是習(xí)慣保留.h,而C++自帶的庫(kù)可能更多的是沒(méi)有后綴的。
 
其實(shí)頭文件就是一個(gè)文件,什么結(jié)尾關(guān)系不大(大部分情況下),所以有時(shí)候我們也能看到.hpp結(jié)尾的文件。
這個(gè)就不多說(shuō)了~
 
總而言之,如果你編譯代碼的時(shí)候報(bào)錯(cuò),說(shuō)什么不能使用未聲明的類(lèi)型之類(lèi)的,基本上就是沒(méi)有包含相應(yīng)的頭文件了。

3.命名空間

作為初學(xué)者,應(yīng)該常常見(jiàn)到下面的代碼(小若:難道不是初學(xué)者就不常見(jiàn)嗎?):

復(fù)制代碼 代碼如下:

#include "cocos2d.h"
using namespace cocos2d;

比如我們要使用Cocos2d-x的Sprite類(lèi),這個(gè)類(lèi)是在cocos2d.h庫(kù)中的,所以我們首先要包含cocos2d.h頭文件。
然后就使用Sprite這個(gè)類(lèi),比如:Sprite* sp = Sprite::create(“boy.png”);
但相信大家都試過(guò),這么直接用會(huì)報(bào)錯(cuò)的,大概是說(shuō)找不到Sprite。
 
這是因?yàn)镾prite是在某個(gè)命名空間里的,我們要這樣使用它:cocos2d::Sprite* sp = cocos2d::Sprite::create(“boy.png”);
這樣就沒(méi)問(wèn)題了,那么,命名空間是個(gè)什么東西?

4.不同庫(kù)的相同類(lèi)名沖突

我們先來(lái)跑一下題,假設(shè)我想貢獻(xiàn)一下,給大家寫(xiě)一個(gè)更好用的庫(kù)(頭文件叫做mutou.h),然后,其中也有一個(gè)類(lèi)叫做Sprite。

于是,大家會(huì)這么使用我的庫(kù):Sprite* mSp = Sprite::new(“girl.png”);
 
那么,問(wèn)題來(lái)了,學(xué)挖掘機(jī)哪家…(小若:停~!回來(lái)!別跑題?。?br /> 那么,如果我們想同時(shí)使用cocos2d和mutou的Sprite類(lèi),會(huì)發(fā)生什么事情?如下代碼:

復(fù)制代碼 代碼如下:

#include "cocos2d.h"
#include "mutou.h"
Sprite* sp = Sprite::create("boy.png");
Sprite* mSp = Sprite::new("girl.png");

這樣一定會(huì)報(bào)錯(cuò),大概是說(shuō)Sprite不明確
所以,這個(gè)時(shí)候,就需要一個(gè)叫做“命名空間”的東西來(lái)區(qū)分這些不同庫(kù)的相同名字的類(lèi)了。
我們把cocos2d的庫(kù)放到名為cocos2d的命名空間里,把mutou的庫(kù)放到名為mutou的命名空間里:

復(fù)制代碼 代碼如下:

#include "cocos2d.h"
#include "mutou.h"
cocos2d::Sprite* sp = cocos2d::Sprite::create("boy.png");
mutou::Sprite* mSp = mutou::Sprite::new("girl.png");

這么使用就不會(huì)出問(wèn)題了,至于如何把某個(gè)庫(kù)放到某個(gè)命名空間中,其實(shí)很簡(jiǎn)單,但是這里先不介紹了。

5.偷懶

回到最初,using namespace cocos2d;又是什么東西呢?
如剛才所見(jiàn),在Sprite前面總是要加上cocos2d::這樣的前綴,實(shí)在是太煩人了。
所以,我們可以偷懶,使用了using namespace cocos2d;之后,就不需要寫(xiě)這樣的前綴了。
 
但是,這只是在沒(méi)有沖突的情況下,如果遇到剛剛說(shuō)的不同庫(kù)的相同類(lèi)名沖突,就必須使用前綴。
 
書(shū)上有提到,濫用using namespace不是什么好事,但我沒(méi)有經(jīng)歷過(guò)什么坑,可能在大型項(xiàng)目中才會(huì)出現(xiàn)問(wèn)題吧。
一般的手游是沒(méi)什么影響了。
 
如果擔(dān)心的話(huà),可以這樣使用:using namespace cocos2d::Sprite;
這樣依舊可以不用cocos2d::前綴就能使用Sprite類(lèi),但如果要用到cocos2d庫(kù)的其他類(lèi),就又要再一次使用using namespace cocos2d::name;
總之,這種方式就是:用到的類(lèi)才使用using聲明。可以節(jié)省一些開(kāi)支。

6.結(jié)束

好吧,前面的內(nèi)容實(shí)在是太基礎(chǔ),基礎(chǔ)到?jīng)]東西可以介紹了。
下一章應(yīng)該會(huì)好一些…

上一篇:VC中CWinThread類(lèi)以及和createthread API的區(qū)別分析

欄    目:C語(yǔ)言

下一篇:C++基礎(chǔ)入門(mén)教程(七):一些比較特別的基礎(chǔ)語(yǔ)法總結(jié)

本文標(biāo)題:C++基礎(chǔ)入門(mén)教程(一):基礎(chǔ)知識(shí)大雜燴

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/3198.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有