2.新的變量初始化方法,int x(1024);等價於int x = 1024;
3.變量隨用隨定義
4.IO方法,不用關注佔位符,不用關注數據類型,不易出錯。下面的幾幅圖展示了這種區別。
5.命名空間namespace
目的:解決標識符衝突,相當於Java中的package6.引用類型
1)普通變量的引用
int a = 3;
int &b = a; // 引用必須初始化,且初始化以後不能再改變,其本質是常指針
b = 10;
效果:a與b指向同一塊內存空間,a的值變成了102)結構體的引用
typedef struct{
int x;
int y;
}Point;
Point p1;
Point &p = p1;
p.x = 10;
p.y = 20;
cout<<p1.x<<p1.y<<endl;
結果:10 20
3)指針類型的引用
int a = 10;
int *p = &a;
int *&q = p;
*q = 20;
cout<<a<<endl;
結果:a = 20
7.const關鍵字
1)const與基本數據類型
const int x = 3;
x = 5; // 錯誤,x不可改變
2)const與指針類型
const int *p = NULL;等價於int const *p = NULL;
int *const p =NULL;
此時const還有各種用法,個人感覺這塊C++太麻煩了!各大IT公司筆試老是喜歡這麼搞!
const char *pc = "abcd"; // 聲明指向常量的指針變量pc,它指向一個字符串常量
pc[3] = 'x'; // 不合法
pc = "efgh"; // 合法
char* const pc = "abcd"; // 常指針
pc[3] = 'x'; // 合法
pc = "efgh"; // 不合法
const char* const pc = "abcd"; // 指向常量的常指針
pc[3] = 'x'; // 不合法
pc = "efgh"; // 不合法
3)const與函數形參
const修飾函數形參,用於保證實參在該函數內部不被改動
8.函數新特性1)函數參數默認值
void fun(int i,int j = 5,int k = 10);
void fun(int i,int j = 5;int k); // 錯誤
有默認參數值的參數必須在參數表的最右端
2)函數重載
在同一個作用域下,函數名相同,但是參數個數、參數類型或者參數順序不同的函數之間叫重載
3)內聯函數
內聯函數關鍵字:inline
調用時執行代碼替換,執行效率高,但是是有條件的
9.內存管理
申請內存用運算符new,釋放內存用運算符delete
例:
int *p = new int;
*p = 5; // 可以合在一起,int *p = new int(5);
delete p;int *arr = new int[10]; // 申請塊內存
delete []arr; // 釋放塊內存
注意:申請內存要判斷是否成功,釋放內存要設空指針
int *arr = new int[1024];
// 一定要判斷一下
if(arr == NULL){
// 分配失敗
}else{
delete []arr;
arr = NULL; // 一定要有,否則誤操作以後,後果很嚴重
}
10.提供了字符串處理類string,注意區分於Java中的String類