欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

const的用法總結(jié)-創(chuàng)新互聯(lián)

一、const用在函數(shù)中:

瑞昌網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)于2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選成都創(chuàng)新互聯(lián)。

注意const 類型只能賦值給const類型

如下幾種運用方式

                 A& operator=(const A& a);
                void fun0(const A* a );
                void fun1( ) const; // fun1( ) 為類成員函數(shù)
                const A fun2( );

  1. const 用在函數(shù)的返回類型中,一般情況下,不用這種返回類型。

    const A fun2( );

2.類的成員函數(shù)后面加 const,表明這個函數(shù)不會對這個類對象的數(shù)據(jù)成員(準確地說是非靜態(tài)數(shù)據(jù)成員)作任何改變。 void fun1( ) const;

在設計類的時候,一個原則就是對于不改變數(shù)據(jù)成員的成員函數(shù)都要在后面加 const,而對于改變數(shù)據(jù)成員的成員函數(shù)不能加 const。所以 const 關鍵字對成員函數(shù)的行為作了更加明確的限定:有 const 修飾的成員函數(shù)(指 const 放在函數(shù)參數(shù)表的后面,而不是在函數(shù)前面或者參數(shù)表內(nèi)),只能讀取數(shù)據(jù)成員,不能改變數(shù)據(jù)成員;沒有 const 修飾的成員函數(shù),對數(shù)據(jù)成員則是可讀可寫的。

除此之外,在類的成員函數(shù)后面加 const 還有什么好處呢?那就是常量(即 const)對象可以調(diào)用 const 成員函數(shù),而不能調(diào)用非const修飾的函數(shù)。

#include<iostream>

using namespace std;

class A{

public:

A(int a=0 ,int b=0 );

const A& operator=(const A& a);

friend ostream& operator<<(ostream &os, const A& a);

friend const A operator+(const A& a, const A& b);

void setA(int ,int );

int getb()const{ return b; }//一般情況不修改數(shù)據(jù)成員的函數(shù)都要修飾成cosnt

int getc()const{ return c; }

private:

int b, c;

};

const A operator+(const A &x, const A& y){//這里聲明返回類型中加上const目的

//防止a+b=c.這種情況通過

A m;

m.b = x.b + y.b;

m.c = x.c + y.b;

return m;

}

ostream& operator<<(ostream &os, const A& a){

os << a.b << endl;

os << a.c << endl;

return os;

}

A::A(int m, int n){ setA(m, n); }

void A::setA(int m,int n){

b = m;

c = n;

}

const A& A::operator =(const A& a){//一般不加const

b = a.b;

c = a.c;

return *this;

}

const A& max(const A& v1, const A& v2){//這里參數(shù)都被聲明為const引用。所以返回值也為

//const 修飾的類,只能調(diào)用const修飾的函數(shù)!

if (v1.getb()>v2.getb()){ return v1; }

else

{

return v2;

}

}

int main(){

const int s = 2;//聲明一個變量時必須進行初始化

//const int d;報錯must be initialed if not extern;

A a(2,3), b, c;

c=b=a;

//(c = b) = a;錯誤的因為(c=b)返回一個const值無法在被賦值。

cout <<"第一次\n"<< a<<b<<c<<endl;

b.setA(10, 5);

c = max(b, c);

cout << "第二次\n"<<a << b << c << endl;

c = a + b;

//a + b = c;這里a+b返回類型被聲明為const A ,所以創(chuàng)建的對象不可以被賦值。

system("pause");

return 0;

}

二、const 用在變量中

1.const 修飾的全局變量是具有內(nèi)部鏈接性!在這點上與static 修飾全局變量相似。

2.const修飾變量一般有兩種方式:const T *a,或者 T const *a

看*號的位置:const T *a 指一個指針a 指向 const修飾的 T類型變量

a可以被賦值但是 *a就不可以復制。

#include<iostream>

using namespace std;

int main(){

const int v1 = 3;

//int * p1 = &v1;錯誤的,因為不能修改,你用一個指向可以修改的int型的指針肯定不可以

int v2 = 3;

const int *p2 = &v2;

//很微妙,不可以用*p2修改v2。

//*p2 = 2;錯誤

v2 = 4;//正確;

const int v3 = 3;

const int *p3 = &v3;//這種情況下通過*p3 或v3都無法修改v3的值。

//v3 = 4;錯誤

//*p3 = 4;錯誤

p3 = p3 + 1;//這個卻可以編譯通過

const int v4 = 3;

const int * const p4 = &v4;

//p4 = p4 + 1;invalid p4指針的指向 不允許改變

}

3.const 變量聲明時必須初始化。

但是若是在類里聲明的注意:因為類可以創(chuàng)建多個對象,不同的對象其const數(shù)據(jù)成員的值可以不同。所以不能在類聲明中初始化const數(shù)據(jù)成員

class A
{
const int size = 100;  //錯誤

int array[size];    //錯誤,未知的size

}

三、 const 的好處:

 可以避免不必要的內(nèi)存分配
 #define STRING "abcdefghijklmn\n"
 const char string[]="abcdefghijklm\n";
 ...
 printf(STRING); //為STRING分配了第一次內(nèi)存
 printf(string); //為string一次分配了內(nèi)存,以后不再分配
 ...
 printf(STRING); //為STRING分配了第二次內(nèi)存
 printf(string);

 ...
 由于const定義常量從匯編的角度來看,只是給出了對應的內(nèi)存地址,
 而不是象#define一樣給出的是立即數(shù),所以,const定義的常量在
 程序運行過程中只有一份拷貝,而#define定義的常量在內(nèi)存中有
 若干個拷貝。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

本文名稱:const的用法總結(jié)-創(chuàng)新互聯(lián)
URL地址:http://chinadenli.net/article46/desshg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、微信公眾號網(wǎng)站導航、網(wǎng)站維護、品牌網(wǎng)站設計、關鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司