C 鏈式操作

2021-08-28 15:15:27 字數 928 閱讀 2702

參考:

鏈式操作:

鏈式操作是利用運算子進行的連續運算(操作),它的特點是一條語句中出現兩個或兩個以上相同的操作符,如連續的賦值操作、連續的輸入操作、連續的輸出操作、連續的相加操作等都是鏈式操作。

類的鏈式操作:

為了實現類的鏈式操作,操作符的過載必須滿足一定的要求:

1、操作符過載函式一定不能返回void型別。

因為void型別不能參與任何運算,所以,操作符過載函式返回void型別實際上是阻止了鏈式操作的可能。

2、對賦值操作符進行過載,如果返回的是類的物件,那麼鏈式賦值操作必須借助於拷貝建構函式才能進行。會有較大的執行開銷。

範例:這邊利用實現string類的方式來說明一下。

首先看如果是操作運算子返回類的物件:

#include #include using namespace std;

class string

;string::string()

string::string(const char *str)

string::string(const string &other)

int length = strlen(other.data) + 1;

delete data;

data = new char[length];

memset(data, 0, length);

strcpy(data, other.data);

return *this;

}

結果:

[admin@localhost tmp]$ ./test

world

一次拷貝建構函式都沒有呼叫,因為賦值運算子操作符函式返回了string類的引用,不會產生類的物件,也就減少了運算消耗,所以,賦值運算子過載幾乎無一例外地返回引用。

C 鏈式佇列基本操作

1 include 2 define queueelementtype int 3using namespace std 45 結點 6 typedef struct node 7linkqueuenode 1112 佇列 13 struct linkqueue14 1819 將q初始化為乙個空的鏈...

js 鏈式操作

elem show css color red 這就是jq裡面的鏈式操作了 是不是很方便啊 可是以前只是用的比較方便 沒仔細了解過是怎麼實現的 被問到了也不知所措所以我就借鑑了下面資料來了解下js的鏈式操作 最常見 的,是j quer y直接返 回thi s的方式 color 最常見的,是 jque...

Canvas鏈式操作

canvas有個非常麻煩的地方就是不支援鏈式操作,導致書寫極其繁瑣,剛剛學習了canvas的鏈式操作。下面是 改進之後的寫法,犀利得多啊!1.canvas document.queryselector canvas 2.3.class c2d4.canvas 5.context canvas.get...