C++基本入門教程(一):基本常識年夜雜燴。本站提示廣大學習愛好者:(C++基本入門教程(一):基本常識年夜雜燴)文章只能為提供參考,不一定能成為您想要的結果。以下是C++基本入門教程(一):基本常識年夜雜燴正文
我很愁悶,這本書果真講得很具體,我在看第二章,看完要深呼吸,其實太詳(lao)細(dao)了。
不外這很好,前面難一些的內容應當會不錯~
那末,這章只是作為預覽的章節,我抽出一些略微比擬有養分的內容記載一下吧~
留意:本系列教程不合適無任何編程說話基本的同伙,只是作為C++基本的一種彌補。
教程內容基於《C++ Primer Plus》一書,合適初學者,生手請直接疏忽。
1. 假如你不正文,那末,我會把你正文失落~!
C++的正文有2種,
第一種,單行正文,那就是://
以下代碼:
// 呵呵
Test* t = new Test();;
//前面隨著的就是正文內容,屬於單行正文
所謂的正文,就是與代碼有關的內容,與編譯器有關的內容,只是給我們本身或許其別人看的。
就像是解釋書。
別的還有一種正文,那就是:/* */
以下代碼:
/*
呵呵
你方才說甚麼來著?
*/
Test* t = new Test();;
/**/中央可以放一段文字,這是多行正文。
這空話就不多說了。
別的要說一下空話(小若:方才誰說空話不多說來著?),那就是正文真的很主要~!
不要聽那末年夜牛說甚麼變量名字獲得好、函數名字獲得好就不須要正文。
每一個人對“好”是有分歧的評價的,所以正文很主要,誰愛好看那些一整頁都沒有正文的代碼呢?
不論是英文正文照樣中文正文,都能讓其它人或許本身以最快的速度懂得某段代碼的意思。
沒錯,假如碰到那些自認為本身寫得一手完善代碼的人,一個正文都不寫的,那末,你就把他全部人給正文失落吧~!
2.頭文件
說話自己除語法以外,最主要的應當就是各類庫了。
各類庫,也就是它的各類功效,我們只需挪用一些函數就可以完成特定的功效。
好比打印文字、讀寫文件甚麼的。
C++供給了許多如許的庫,它們被分離寄存在分歧的文件中。
假如想應用這些庫外面的函數,就要包括這些庫的頭文件。
所以,我們常常會看到上面的代碼:
#include "hello.h"
#include <iostream>
#include就是用來包括頭文件的,包括頭文件以後就可以應用某個庫的函數了。
那末,為何有些頭文件是.h開頭,有些又沒有呢?
其完成在C++默許劃定是不須要.h開頭的,.h開頭只是之前留上去的習氣~
但,其完成在年夜家在新建類文件的時刻照樣習氣保存.h,而C++自帶的庫能夠更多的是沒有後綴的。
其實頭文件就是一個文件,甚麼開頭關系不年夜(年夜部門情形下),所以有時刻我們也能看到.hpp開頭的文件。
這個就不多說了~
總而言之,假如你編譯代碼的時刻報錯,說甚麼不克不及應用未聲明的類型之類的,根本上就是沒有包括響應的頭文件了。
3.定名空間
作為初學者,應當經常見到上面的代碼(小若:豈非不是初學者就不罕見嗎?):
#include "cocos2d.h"
using namespace cocos2d;
好比我們要應用Cocos2d-x的Sprite類,這個類是在cocos2d.h庫中的,所以我們起首要包括cocos2d.h頭文件。
然後就應用Sprite這個類,好比:Sprite* sp = Sprite::create(“boy.png”);
但信任年夜家都試過,這麼直接用會報錯的,年夜概是說找不到Sprite。
這是由於Sprite是在某個定名空間裡的,我們要如許應用它:cocos2d::Sprite* sp = cocos2d::Sprite::create(“boy.png”);
如許就沒成績了,那末,定名空間是個甚麼器械?
4.分歧庫的雷同類名抵觸
我們先來跑一下題,假定我想進獻一下,給年夜家寫一個更好用的庫(頭文件叫做mutou.h),然後,個中也有一個類叫做Sprite。
因而,年夜家會這麼應用我的庫:Sprite* mSp = Sprite::new(“girl.png”);
那末,成績來了,學發掘機哪家…(小若:停~!回來!別跑題!)
那末,假如我們想同時應用cocos2d和mutou的Sprite類,會產生甚麼工作?以下代碼:
#include "cocos2d.h"
#include "mutou.h"
Sprite* sp = Sprite::create("boy.png");
Sprite* mSp = Sprite::new("girl.png");
如許必定會報錯,年夜概是說Sprite不明白
所以,這個時刻,就須要一個叫做“定名空間”的器械來辨別這些分歧庫的雷同名字的類了。
我們把cocos2d的庫放到名為cocos2d的定名空間裡,把mutou的庫放到名為mutou的定名空間裡:
#include "cocos2d.h"
#include "mutou.h"
cocos2d::Sprite* sp = cocos2d::Sprite::create("boy.png");
mutou::Sprite* mSp = mutou::Sprite::new("girl.png");
這麼應用就不會出成績了,至於若何把某個庫放到某個定名空間中,其實很簡略,然則這裡先不引見了。
5.偷懶
回到最後,using namespace cocos2d;又是甚麼器械呢?
如適才所見,在Sprite後面老是要加上cocos2d::如許的前綴,其實是太煩人了。
所以,我們可以偷懶,應用了using namespace cocos2d;以後,就不須要寫如許的前綴了。
然則,這只是在沒有抵觸的情形下,假如碰到方才說的分歧庫的雷同類名抵觸,就必需應用前綴。
書上有提到,濫用using namespace不是甚麼功德,但我沒有閱歷過甚麼坑,能夠在年夜型項目中才會湧現成績吧。
普通的手游是沒甚麼影響了。
假如擔憂的話,可以如許應用:using namespace cocos2d::Sprite;
如許照舊可以不消cocos2d::前綴就可以應用Sprite類,但假如要用到cocos2d庫的其他類,就又要再一次應用using namespace cocos2d::name;
總之,這類方法就是:用到的類才應用using聲明。可以節儉一些開支。
6.停止
好吧,後面的內容其實是太基本,基本到沒器械可以引見了。
下一章應當會好一些…