1.C++定義了一組內置的基本數據類型:整數類型(int)、浮點數類型(float)、字符型(char)、布爾類型(Boolean);
C++標準庫還提供了一組擴展的基本數據類型:字符串(String)、複數(complex number)、向量(vector)、列表(list);
例1:#include<String>
String str = "getting started";
#include <vector>
vector<string> chapter_titles(20);
2.預處理器指示符
#include:指示符讀入制定文件的內容
#ifndef _H
#define _H
#endif
條件指示符可防止頭文件的重複處理;
#ifdef DEBUG
#endif
調試使用
#ifdef __cplusplus
extern "c"
#endif
我們可以根據他來判斷該程序是否是C++程序,以便有條件地包含一些d代碼。
__LINE__:記錄文件已經編譯的行數
__FILE__:包含正在被編譯的文件的名字
__TIME__:編譯時間,時間格式爲hh:mm:ss
__DATE__:編譯日期
assert():是C語言標準庫中提供的一個通用處理器宏。
3.註釋
(1)C++中有兩種註釋符號,一種(/× ×/);註釋對不能嵌套;解決嵌套註釋的辦法:在星號和斜線之間加一個空格
(2)雙斜線(//)
4.文件的輸入和輸出
(1)iostream庫
例2:#include <iostream.h>
#include <fstream>
//打開一個輸出文件
ofstream outfile("name of file");
if(!outfile){
cout<<"sorry!"
}
//打開一個文件供輸入
ifstream infile("name of file")
if(!infile){
cout<<"sorry!";
}
#include <iostream.h>
#include <fstream.h>
#include "string.h"
int main(){
ofstream outfile("out_file");
ifstream infile("in_file");
if(!infile){
cout<<"unable to open input file!\n";
return -1;
}
if(!outfile){
cout<<"unable to open output file!\n";
return -2;
}
char word[1024];
while(infile>>word){
cout<<word<<endl;
outfile<<word<<'\n';
}
return 0;
}
上述例子實現文件的拷貝;
4.C++對數組類型的支持
(1)內置數組的缺點?
(2)如何改善?
(3)Array類型與C++標準庫中的vector類的比較,並瞭解泛型算法;
5.動態分配內存和指針
(1)靜態內存分配
(2)動態內存分配
(3)內存泄漏:忘記刪除動態分配的內存
(4)函數重載機制:允許兩個或更多個函數使用同一個名字,限制條件是他們的參數表必須不同、參數類型不同、或者參數的數目不同;
(5)構造函數和析構函數
(6)域操作符:雙冒號(::);
(7)泛型設計
(8)模板機制
5.基於異常的設計(exception)
6.命名空間
7.標準數組--向量
向量是一個類模板:
vector<int> ivec(10); //定義一個包含10個整型對象的向量
vector<string> svec(10);//定義一個包含10個字符串對象的向量
Array類模板與vector類模板的實現之間有兩個主要區別:
第一個:vector類模板支持“向現有的數組元素賦值”的概念以及"插入附加元素"的概念,即vector數組可以在運行時刻動態增長;
第二個:vector類不是提供一個巨大的“可以適用於向量”的成員操作符,而只是提供了一個最小集。
#include<vector>
//創建vector對象的各種方法
vector<int> veco;//空的vector
vector<int> vec1(size);
vector<int> vec2(size,value);
.......
遍歷方法:
(1):下標遍歷
(2):使用迭代器對來標記向量的起始處和結束處(iterator pair);
==>>迭代器:是一個支持指針類型抽象的類對象,vector類模板提供了一堆操作begin()和end(),他們分別返回指向“向量開始處”和:結束處後一個:的迭代
器。
例3:#include<vector>
extern int getSize();
void mumble(){
int size = getSize();
vector<int> vec(size);
vector<int>::iterator iter = vec.begin();
for(int ix=0;iter !=vec.end(); ++iter,++ix){
*iter = ix;
//...
}
}