程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++, const:,const

C++, const:,const

編輯:C++入門知識

C++, const:,const


       

問題:

  • const成員函數和普通成員函數可以是同名同參數嗎? 可以,這是一種函數的重載。
  • const成員函數可不可以修改對象的成員變量的值? 不可以修改。//error C3490: 由於正在通過常量對象訪問"year",因此無法對其進行修改
  • 非const成員函數是否可以訪問const對象成員? 不可以訪問。 //error C2662: "Time::show_time": 不能將"this"指針從"const Time"轉換為"Time &"
  • const成員函數是否能調用非const成員函數?不能。
  • const成員函數能否訪問非const成員變量?能。

   

 1. const成員函數和普通成員函數可以是同名同參數的,這是一種函數的重載。

#include "stdafx.h"

#include <iostream>

using namespace std;

      

class Time

{

public:

Time():year(2015)

{

 }

   

 void show_time (void) const

{

cout<<"year:"<<year<<endl;

}

     

void print (int i)

{

cout<<"fun i:"<<i<<endl;

}

     

void print ( int i) const

{

cout<<"const fun i:"<<i<<endl;

}

     

private:

const int year;

};

        

int _tmain(int argc, _TCHAR* argv[])

{

Time time;

time.show_time();

time.print(1);

     

Time const ctime;

ctime.show_time();

ctime.print(1);

     

system("pause");

return 0;

}

     

/*

year:2015

year:2015

請按任意鍵繼續. . .

*/

   2. const成員函數不可以修改對象的成員變量的值。

class Time

{

public:

void show_time (void) const

{

cout<<"year:"<<year<<endl;

year = 11;//error C3490: 由於正在通過常量對象訪問"year",因此無法對其進行修改

}

     

     

private:

int year;

};

   3. 非const成員函數不可以訪問const對象成員:

   

 4. Const成員函數不能調用非const成員函數;

class Time

{

public:

    Time():year(2015)

    {

          

    }

   

    void show_time (void) const

    {

        cout<<"year:"<<year<<endl;

        print(11);//error C2662: "Time::print": 不能將"this"指針從"const Time"轉換為"Time &"

    }

   

    void print (int i)

    {

        cout<<"fun i:"<<i<<endl;

    }

   

private:

    int year;

};

   

 5. const成員函數能訪問非const成員變量。但是不能修改。

class Time

{

void show_time (void) const

{

cout<<"year:"<<year<<endl;

}

   

private:

const int year;

};

   

參考:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved