c++11新特性
程式設計規範縮寫詞1
程式設計規範縮寫詞2
當需要為物件分配空間時,前置宣告會有問題。
cpp檔案中使用或者static來限制不需要匯出的變數,常量或者函式。
class a
~a() {}
long a_;
};class b : virtual public a
};class c : virtual public a
};class d : public b, public c
};
1. 是一種利用物件生命週期來控制程式資源(如記憶體、檔案控制代碼、網路連線、互斥量等等)的簡單技術;在物件構造時獲取資源,接著控制對資源的訪問使之在物件的生命週期內始終保持有效,最後在物件析構的時候釋放資源。
2. c++11中lock_guard對mutex互斥鎖的管理就是典型的raii機制
正規表示式語法
c++11新特性
新增long long型別
2ll;2ull;
列表初始化:適用於vector,list,map等
std::vector v_int = ;
std::vector v_int2;
nullptr,專門用來初始化指標的字面值,只能用來初始化指標。
constexpr關鍵字-編譯階段
1)constexpr 變數:首先是const變數,並且必須由常量或者常量表示式來初始化,否則在編譯階段會報錯;
2)constexptr 函式:返回值型別前加constexpr關鍵字。編譯階段就能確認返回值的函式。
型別別名的定義
1)using type_new_name = type; 等價於 typedef type_new_name type;
auto型別符
decltype修飾符:用於獲取表示式的型別,類似於typeof,但是該關鍵字可用在模板程式設計中。
類內成員初始化
class test
test(int a, int b, int c, int d)
:_a(a), _b(b), _c(c), _d(d)
{}virtual ~test() {}
protected:
private:
int _a;
int _b;
int _c;
int _d;
};
範圍for語句
能夠有以下用法的,乙個是常規的陣列,另乙個是具有begin/end操作並返回迭代器。
void testforeach()
; std::vectorv_b = ;
int b = ;
for (int v : v_a)
for (int v : v_b)
for (int v : b)
}
cbegin,cend,此處c表示const型別
標準庫begin/end函式–提供了額外的安全檢查
void testlibbegin()
; std::cout << "testlibbegin:" << std::endl;
for (int* p = std::begin(a); p != std::end(a); ++p)
}//如下用法,編譯會出錯
void testlibbeginfailed(int a)
}//如下用法,編譯成功,但執行會和預期不一致
void testlibbegincompilesucceed(int a)
}
sizeof可以作用於類中的成員
class
test
test test;
memset
(test.data,0,
sizeof
(test::data));
memset
(test.data,0,
sizeof
(test.data)
);
委託建構函式
乙個建構函式可以委託其他建構函式完成工作。
#include
class
test
test
(int a,
int b)
public
:int a;
int b;};
int main (
)
C 程式設計規範
關於組織和策略問題 0 不要拘泥於小節 了解哪些東西不應該標準化 類 函式和列舉 likethis 變數名 likethis 私有成員變數名 likethis 巨集名稱 like this。1 在高警告級別乾淨利落地進行編譯 2 使用自動構建系統 3 使用版本控制系統 最廉價也最流行的版本控制系統是...
C 程式設計規範
c coding standards 101 rules,guidelines,and best practices 組織及策略上的問題 organizational and policy issues 0.不拘小節 或 了解什麼不需要被規範化 1.在高警告級別下乾淨地編譯。2.使用自動化的構建 b...
c程式設計規範
c c 程式設計規範 1 檔案結構 每個c c 程式通常分為兩個檔案。乙個檔案用於儲存程式的宣告 declaration 稱為標頭檔案。另乙個檔案用於儲存程式的實現 implementation 稱為定義 definition c c 程式的標頭檔案以 h 為字尾,c 程式的定義檔案以 c 為字尾,...