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