C++学习第一天
用來記錄菜鳥的學(xué)習(xí)過程
編譯環(huán)境:linux下g++
1 初窺輸入、輸出
1.1 標準輸入與輸出對象
cin?? cout?? cerr? clog? (可以和C中的標準輸入輸出對比一下)
默認情況下,讀cin會刷新cout;當程序正常結(jié)束時,cout也會被刷新。
先熟悉一下程序模型:
#include<iostream>
? int main()
{
?? std::cout<<"enter two numbers:"<<std::endl;
??? int v1,v2;
??? std::cin>>v1>>v2;
??? std::cout<<"the sum of "<<v1<<" and "<<v2<<" is "<<v1+v2<<std::endl;
??? return 0;????????????????????????????????????????????????????????????????????????
?? }
輸入、輸出格式明顯和c不同,值得注意的是輸出部分,endl是個操縱符,將他寫入輸出流時具有輸出換行的效果,并且刷新與設(shè)備相關(guān)聯(lián)的緩沖區(qū)(buffer)。通過刷新緩沖區(qū)用戶可以立即看到輸入到流中的輸出。
2 注釋
單行注釋://
多行注釋:/* */
3 構(gòu)造函數(shù):每個類都可能會定義一個或幾個特殊的成員函數(shù)來告訴我們?nèi)绾纬跏蓟愵愋偷淖兞?#xff0c;定義如何進行初始化的成員函數(shù)就叫構(gòu)造函數(shù)。
每個構(gòu)造函數(shù)必須能個接受不同數(shù)目或者不同類型的參數(shù)。
4 變量的直接初始化和復(fù)制初始化區(qū)別
直接初始化:int i(2);
復(fù)制初始化:int i=2;
可以混合使用:比如:double salary = 999.99,wage(salary + 0.01);
5 變量初始化規(guī)則
5.1 內(nèi)置類型變量的初始化
內(nèi)置類型變量是否自動初始化取決于變量定義的位置,在函數(shù)體外定義的變量都初始化為0,在函數(shù)體內(nèi)定義的變量不進行自動初始化。
建議:每個內(nèi)置類型變量都要進行初始化,為了程序的安全性。
5.2 類類型變量的初始化
一般每個類都已幾個成員函數(shù)即構(gòu)造函數(shù)來初始化類變量,如果沒有構(gòu)造函數(shù),有默認的特殊的構(gòu)造函數(shù):默認構(gòu)造函數(shù)。
在C++中變量必須且僅能定義一次,而且在使用變量之前必須聲明或定義變量。
6 名字的作用域
全局作用域、局部作用域、語句作用域
在一個函數(shù)體內(nèi)的局部變量如果和全局變量同名時,在使用中可以屏蔽全局變量
7 通常把一個變量定義在它首次使用的地方是個比較好的建議。提高代碼的可讀性
8 const限定符
把一個對象轉(zhuǎn)換成常量。例如:const int bufsize = 512;
定義了bufsize是一個常量,在任何地方它的值都是不可改變的。
常量定義后不能再修改,所以定義時必須進行初始化
?
9 引用:就是對象的另一個名字。引用是一種復(fù)合類型,通過在變量名前加“&”來定義。
當引用初始化后,只要該引用存在,他就保持綁定在初始化時指向的對象,不可能將引用綁定到另外一個對象。
引用就是對象的另一個別名,都是同一個人。就好比人的大名和小名。對任何一個名字的操作都是一樣的。
可以定義多個別名。定義別名時需要注意要保持類型的一致性。
10 typedef名字??? 用來定義類型的同義詞:typedef int exam_score
??????????????????????????????????????????????????????? exam_score test_result; <==> int test_result;
11 枚舉
12 類類型
13 設(shè)計自己的頭文件
頭文件為相關(guān)聲明提供了一個集中放置的位置,頭文件中一般包含類的定義、extern變量的聲明和函數(shù)的聲明。
****************************************************************************
****************************************************************************
第三章:標準庫類型
主要講述:命名空間的using聲明、標準庫string類型、標準庫vector類型、迭代器、標準庫bitset類型
1。命名空間的using聲明
形式:???? using namespace::name
一旦使用了using聲明,我們就可以直接引用名字了,而不需要再加引用該名字的命名空間。
2. 標準庫string類型
string類型支持長度可變的字符串,
2.1? string對象的讀寫
測試程序代碼:
編譯后運行:
注意:a 讀取我們輸入的字符串時,忽略了開頭所有的空白字符(如空格,換行符,制表符)
???????? b? 讀取字符直到再次遇到空白字符,讀取終止。我們輸入的是:“???????????????? love you? ”前后都有空格,但是當輸出時只顯示love,明顯前面的空格忽略了,再次遇到空格時讀終止了。
2.2? 讀入未知數(shù)目的string對象
小程序:
輸出結(jié)果為:
我們發(fā)現(xiàn)上次總結(jié)的兩點再此體現(xiàn)了,并且這個while循環(huán)一直有效,等著你輸入。。。。。。
2.3 用getline讀 取正行文本
1 #include<iostream>
2 #include<string>
3 using namespace std;
4 int main()
5 {
6?? string line;
7?? cout<<"請輸入字符:";
8?? while(getline(cin,line))
9?????? cout<<"字符數(shù)出:"<<line<<endl;
10????? // cout<<"請輸入字符:";
11?? return 0;
12 }
編譯運行:
注解:由于getline函數(shù)返回時將會丟棄換行符,換行符將不會存在string對象中
2.4 string對象的操作
對size()的驗證
編譯運行結(jié)果:
注意:換行符“\n”在size統(tǒng)計時占一個字符。
2.5 string對象的賦值
2.6 string中對字符的操作
3 標準庫vetcor類型
3.1 vector對象的定義和初始化
3.2 vector對象的操作
4 迭代器
迭代器是一種檢查容器內(nèi)元素并遍歷元素的數(shù)據(jù)類型
5? 標準庫bitset類型
定義形式:bitset<32> bitvec; //32bits,all zero
和vector區(qū)別:需在尖括號內(nèi)指出長度值
轉(zhuǎn)載于:https://www.cnblogs.com/songfeixiang/p/3340159.html
總結(jié)
- 上一篇: HDU 4121 Xiangqi (算是
- 下一篇: 6个免费的C++图形和游戏库