真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

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

成都創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、網(wǎng)站建設(shè)與策劃設(shè)計,烏海海南網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:烏海海南等地區(qū)。烏海海南做網(wǎng)站價格咨詢:13518219792

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行是函數(shù)聲明,第4行是簡單的調(diào)用調(diào)用都沒有什么可說的,第5行就不一樣了:竟然可以支持帶單位運算!

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

假設(shè)我們有如下一個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);}

經(jīng)過這樣的定義之后,以下的代碼都是合法的:

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類就是常規(guī)操作了:

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++中怎么自定義字面量,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


名稱欄目:C++中怎么自定義字面量
URL地址:http://weahome.cn/article/jpejdh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部