亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中怎么自定義字面量

發布時間:2021-07-29 15:38:52 來源:億速云 閱讀:111 作者:Leah 欄目:大數據

本篇文章給大家分享的是有關C++中怎么自定義字面量,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

change_speed(Speed s);    // better: the meaning of s is specified                          // 較好:定義了s的含義// ...change_speed(2.3);        // error: no unit 錯誤:沒有單位change_speed(23m / 10s);  // meters per second 米每

第1行是函數聲明,第4行是簡單的調用調用都沒有什么可說的,第5行就不一樣了:竟然可以支持帶單位運算!

一般來講,C++或者C語言都支持類似于25L之類的寫法,這里的L就是字面量運算符。從C++11開始,C++語言引入的一項技術:通過重載operator ""(雙引號)后綴運算符實現的(稱為literal operator,字面量運算符)。

假設我們有如下一個Distance類:

struct Distance{    explicit Distance(double val) :meters(val) {}    long double meters{ 0 };};

我們可以定義如下的字面量運算符用以支持m和km單位:

Distance operator""km(long double val){  return Distance(val * 1000);}Distance operator""m(long double val){  return Distance(val);}Distance operator""km(unsigned long long val){  return Distance(val * 1000);}Distance operator""m(unsigned long long val){  return Distance(val);}

經過這樣的定義之后,以下的代碼都是合法的:

Distance d0{ 1000 };Distance d1{ 1.0km };

其中第二種形式定義d1之后,d1.meters的值是1000。我們也可以以同樣的方式定義一個Time類,這個類支持sec和hour單位:

struct Time{    explicit Time(double val):seconds(val)    {}    long double seconds{ 0 };};Time operator""sec(long double val){    return Time(val);}Time operator""hour(long double val){    return Time(val * 3600);}Time operator""sec(unsigned long long val){    return Time(val);}Time operator""hour(unsigned long long val){    return Time(val * 3600);}

接下來的定義支持除法運算符的Speed類就是常規操作了:

struct Speed{    explicit Speed(double val) :speed(val)    {}    long double speed;};Speed operator /(Distance d, Time t){    return Speed(d.meters / t.seconds);}

這些準備工作完成之后,就可以像下面這樣編程了:

int main(){    Distance d0{ 1000 };    Distance d1{ 1000.0m };    Time t1{ 2.0hour };    Speed s1(d1 / t1);    std::cout << "s1=" << s1.speed << "m/s" << std::endl;    Speed s2{ 7.8km / 1sec };    std::cout << "s2=" << s2.speed << "m/s" << std::endl;    return 0;}

以上就是C++中怎么自定義字面量,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

柳林县| 临泉县| 涿州市| 尼勒克县| 定结县| 宁海县| 林州市| 涿鹿县| 南皮县| SHOW| 富蕴县| 乡城县| 商河县| 濮阳县| 额尔古纳市| 武隆县| 潮安县| 灵丘县| 岳阳市| 万全县| 方城县| 壤塘县| 武邑县| 周宁县| 柳州市| 桑日县| 永宁县| 临江市| 新建县| 奉新县| 偃师市| 宜春市| 宜黄县| 翁牛特旗| 静海县| 哈巴河县| 海淀区| 宜良县| 额敏县| 合肥市| 玛曲县|