標頭檔案 iostream
同於 ~
帶有constexpr標識的函式的計算工作可以在編譯階段完成(在可以計算出來的情況下)。
如下面**所示,若沒有constexpr則會報錯。
#include
using
namespace std;
constexpr
intmin
(int a,
int b)
intmain()
也就是說,這個關鍵字可以拓展c++在編譯期的能力。
(當你使用它時,說明你的程式設計上有問題)
這個關鍵字用於改變const的不變性。
如去除不變性:
const
int i =1;
int* pi =
const_cast
<
int*
>
(&i)
;*pi =
4;
類似於auto,decltype的作用也是定義型別。
如:
double a =3;
auto b = a;
//不僅將 b 定義為 a 的型別(double),還將 a 的值賦給 b。
decltype
(a) b;
//將 b 定義為 a 的型別(double),但未給 b 賦值。
decltype
((a)
) c = b;
//這裡 a 的兩邊有括號,表示將 c 的型別為 a 的引用(double&),即 c 成為 b 的引用。
auto
& d = a;
//auto的引用方法
decltype與auto一起使用:
template
<
typename t,
typename u>
auto
add(t a,u b)
->
decltype
(a+b)
即讓函式返回值由a+b的型別而定。
也可以只用auto,但是稍有不同(見注釋):
template
<
typename t,
typename u>
auto
add(t a,u b)
轉換具有繼承關係的指標或引用,且只能子轉父(因為dynamic_cast做安全性檢查)。
如:
parent* p =
new child;
child* c =
dynamic_cast
>
(p);
在轉換失敗時,如果轉換的是指標,則會返回空指標,如果轉換的是引用,則會丟擲異常。
enum
classa:
char
;
class使a成為乙個強型別(即使用時必須a::red),char規定a的大小。
被explicit修飾的函式要被明確地使用(不進行預設的轉換)。
如:
struct a};
struct b};
a a1 =1;
//可,等於a a1 = a(1);
//但是b不能這樣,b可以:
b b1(1
);
關鍵字extern用來告知編譯器變數在當前範圍之外宣告過了。被extern語句描述過的變數將分派不到任何空間,因為他們在別的地方被定義過了。extern語句頻繁的用於在多個檔案之間的跨範圍資料傳遞.。
1、1.0預設為double型別
c 學習筆記第二部分
part 2 一 陣列 指標 在c 中的陣列std string str string是std類裡面的乙個物件 這個語句就是命名乙個陣列名字叫做str 2.c 允許指標群 p,就是多個指標有同樣的值 int p1 myint int p2 myint c 支援無型別 void 指標,就是沒有被宣告為...
Web API 第二部分
web api 第二部分 元素偏移量 offset element.offsettop element.offsetleft element.offsetwidth 可以得到元素的大小 寬度和高度 是包含padding border width element.offsetheight elemen...
redux 第二部分
redux 的使用方法,為什麼使用 action.js 檔案,進行優化 將其分開,然後我們通過工廠函式的每次返回不同的物件,由於引數是固定的,每次返回的都是事件型別和事件資料,所以我們可以使用乙個函式,通過其返回值來返回乙個物件,讓後傳遞給 action 我們的 reducer 函式有兩個引數,引數...