1. 程式人生 > >C++ primer學習記錄

C++ primer學習記錄

DAY1

 g++  -o  name  name.cpp
編譯命令 , -o hello是編譯器引數,指定了可執行檔案的檔名

echo $? 獲取剛才結束的程式的返回值

檔案重定向 ./檔名 <輸入檔案> 輸出檔案
for example:   ./file<in>out

DAY2

extern //宣告,可以跨檔案使用變數
extern const int a

const int *p;//可以改變指標的指向,但不能改變指標所指位置的值(p是指向常量的指標)
int *const p;//不能改變指標的指向,但可以改變指標所指位置的值(p是常量指標)
const int *const p;//既不能改變指標的指向,也不能改變指標所指位置的值(p是指向常量的常量指標)



DAY3

宣告為constexpr的變數一定是一個常量,且必須用常量表達式初始化
一個constexpr指標的初始值必須是nullptr或者0或者儲存於某個固定地址中的物件
函式體內定義的變數"一般"並非存放在固定的地址中,因此constptr不能指向這樣的變數
constptr宣告中如果定義了一個指標,限定符僅對指標有效,與指標所指的物件無關

指標本身是個常量稱為 頂層const
指標指向一個常量稱為 底層const
當執行對物件的拷貝操作時 頂層const不受影響
而底層const卻會帶來限制 拷入和拷出的物件必須具有相同的底層const資格

auto 一般會忽略掉頂層const,並保留底層const
如果希望推斷出的auto 型別是一個頂層const需 const auto
auto 和 decltype 區別
1 auto 忽略頂層const decltype 保留頂層const
2 遇到引用,auto推斷出原有型別,decltype推斷出引用
3 對解引用操作 auto推斷出解引用操作,decltype推斷出引用
4 auto會實際執行,decltype不會執行