1. 程式人生 > 資料庫 >postgresql 切換 log、xlog日誌的實現

postgresql 切換 log、xlog日誌的實現

技術標籤:constc++

C++成員函式後面加const

給隱含的this指標加const,表示這個this指標指向的東西是const的,即這個函式中無法更改資料成員,相當於只讀操作

1、const修飾普通型別的變數

const int a = 7;

int b = a; // 正確

a = 8; // 錯誤

a 被定義為一個常量,並且可以將 a 賦值給 b,但是不能給 a 再次賦值。對一個常量賦值是違法的事情,因為 a 被編譯器認為是一個常量,其值不允許修改。

2、const修飾指標變數

A、const修飾指標指向的內容,則內容為不可變數

const int *p = 8;

指標指向的8不可改變。左定向

B、const修飾指標,則指標為不可變數

int a = 8;

int * const p = &a;

*p = 9; // 正確

int b = 7;

p = &b; // 錯誤

對於const指標p,指向的記憶體地址不能夠被改變,但是其內容可以改變。右定向

C、const修飾指標和指標指向的內容,則指標和指標指向的內容都為不可變數

int a = 8;

const int * const p = &a;

const p的指向的內容和指向的記憶體地址都已固定,不可改變

根據const位於*的位置,左定值,右定向,const修飾不變數

3、const引數傳遞和函式返回值

A、值傳遞的const修飾傳遞,一般這種情況不需要const修飾,因為函式會自動產生臨時變數複製實參值

B、當const引數為指標時,可以防止指標被意外篡改

C、自定義型別的引數傳遞,需要臨時物件複製引數,對於臨時物件的構造,需要呼叫建構函式,比較浪費時間,因此採用const外加引用傳遞的方式

#include<iostream>
using namespace std;
class Test
{
public:
    Test(){}
    Test(int _m):_cm(_m){}
    int get_cm()const
    {
        return _cm;
    }
private:
    int _cm;
};
void Cmf(const Test& _tt)
{
    cout<<_tt.get_cm();
}
int main(void)
{
    Test t(8);
    Cmf(t);
    return 0;
}

輸出:

4、const修飾函式的返回值

A、const修飾內建型別的返回值,修飾與不修飾返回值作用一樣

B、const修飾自定義型別作為返回值,此時返回的值不能作為左值使用,既不能被賦值,也不能被修改

C、const修飾返回的指標或者引用,是否返回一個指向const的指標,取決於想讓使用者幹什麼

5、const修飾類成員函式

const修飾類成員函式,目的是防止成員函式修改被呼叫物件的值,如果不想修改一個呼叫物件的值,所有的成員函式都應當宣告為const成員函式