1. 程式人生 > >C++:const的四種用法

C++:const的四種用法

一、用const修飾函式引數

1、修飾指標,可以防止指標被修改
void test(const ClassA* a)
{
    ClassA** b = &a; //編譯錯誤,不能對const指標取地址
    ClassA* c = a; //編譯錯誤,不能將const指標轉普通指標
    (*b) = new ClassA();
}
void test2(ClassA* a)
{
    ClassA** b = &a;
    (*b) = new ClassA();
}
2、修飾普通型別,說明這個引數不應該被修改
void test(const int a)
{
        a++; //編譯錯誤
int* c= &a; //編譯錯誤,不能取地址,否則就具備了改a的能力 int b = a; //不用強轉也可以編譯通過,但還是沒能力改a的值 }
3、修飾引用型別,引數的值不能被修改, 也就失去了引用型別的效果,但傳遞物件時,可以起到不copy物件的目的。
void test(const int& a)
{
    a = 2; //編譯錯誤,不能修改const引用型別的值
}
void test(const ClassA& a) //傳遞的時候,不需要copy一個新的ClassA,又能保護a
{

}

二、用const修飾區域性或全域性變數,功能類似函式引數

三、用const修飾函式返回值,說明函式的返回型別是const的,功能類似於函式引數

const int test()
{
    int a = 1;
    return a;
}

四、用const修飾函式,說明函式不會修改成員變數的值

class ClassA
{
public:
    int b;
    int test() const
    {
        b = 3; //編譯錯誤,const修飾的函式不能修改類成員變數的值
        return b;
    }
}