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

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

const的用法總結(jié)

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

十年的淮陰網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營(yíng)銷(xiāo)網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整淮陰建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“淮陰網(wǎng)站設(shè)計(jì)”,“淮陰網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

注意const 類(lèi)型只能賦值給const類(lèi)型

如下幾種運(yùn)用方式

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

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

    const A fun2( );

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

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

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

#include

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){//這里聲明返回類(lèi)型中加上const目的

//防止a+b=c.這種情況通過(guò)

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 修飾的類(lèi),只能調(diào)用const修飾的函數(shù)!

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

else

{

return v2;

}

}

int main(){

const int s = 2;//聲明一個(gè)變量時(shí)必須進(jìn)行初始化

//const int d;報(bào)錯(cuò)must be initialed if not extern;

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

c=b=a;

//(c = b) = a;錯(cuò)誤的因?yàn)椋╟=b)返回一個(gè)const值無(wú)法在被賦值。

cout <<"第一次\n"<< a<

b.setA(10, 5);

c = max(b, c);

cout << "第二次\n"<

c = a + b;

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

system("pause");

return 0;

}

二、const 用在變量中

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

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

看*號(hào)的位置:const T *a 指一個(gè)指針a 指向 const修飾的 T類(lèi)型變量。

a可以被賦值但是 *a就不可以復(fù)制。

#include

using namespace std;

int main(){

const int v1 = 3;

//int * p1 = &v1;錯(cuò)誤的,因?yàn)椴荒苄薷?,你用一個(gè)指向可以修改的int型的指針肯定不可以

int v2 = 3;

const int *p2 = &v2;

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

//*p2 = 2;錯(cuò)誤

v2 = 4;//正確;

const int v3 = 3;

const int *p3 = &v3;//這種情況下通過(guò)*p3 或v3都無(wú)法修改v3的值

//v3 = 4;錯(cuò)誤

//*p3 = 4;錯(cuò)誤

p3 = p3 + 1;//這個(gè)卻可以編譯通過(guò)

const int v4 = 3;

const int * const p4 = &v4;

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

}

3.const 變量聲明時(shí)必須初始化。

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

class A 

const int size = 100;    //錯(cuò)誤 

int array[size];        //錯(cuò)誤,未知的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定義常量從匯編的角度來(lái)看,只是給出了對(duì)應(yīng)的內(nèi)存地址, 
  而不是象#define一樣給出的是立即數(shù),所以,const定義的常量在 
  程序運(yùn)行過(guò)程中只有一份拷貝,而#define定義的常量在內(nèi)存中有 
  若干個(gè)拷貝。


分享名稱(chēng):const的用法總結(jié)
文章URL:
http://weahome.cn/article/gedsop.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部