關於C 類的成員函式是否要加關鍵字「const」

2022-02-15 02:40:03 字數 1162 閱讀 6771

原則:類的成員函式在小括號後大括號前加上 const ,代表不準備改變物件的資料。不加的話代表有可能會改變物件的資料。

1.當常量物件,就是加上const修飾的類的成員去呼叫常量成員函式時,這表示:物件的初始化資料一定不能改變,常量成員函式說:放心,我不會改變你的初始化資料的,這一切都很好。

2.當常量物件呼叫沒加const修飾的類的成員函式時,這表示:物件的初始化資料一定不能改變,非常量成員函式說:我不能保證哦!完犢子,沒商量好,這要出問題。

3.當非常量物件呼叫常量成員函式時,這表示:物件的初始化資料可以被改變,常量成員函式說:我並不打算改變你的資料。這,很和諧!

4.當非常量物件呼叫非常量成員函式時,這表示:物件的初始化資料可以被改變,非常量成員函式說:你呼叫我,我有可能會改變你的資料哦,這個物件說:改就改嘍,我本來就沒打算一輩子不改。嗯,氣氛還挺好。

舉例:singledog.h標頭檔案:

#pragma once#include

using

namespace

std;

class

singledog

int get_age() const

const

char* get_city() const

void set_id(int id)

void

play();

~singledog();

private

:

intid;

intage;

const

char*city;

};singledog::singledog(

int id,int age,const

char*city):id(id),age(age),city(city)

void

singledog::play()

singledog::~singledog()

view code

singledog.cpp原始檔:

#include"

singledog.h

"int

main()

view code

小結:設計類的成員函式時,只要不準備改變物件的資料,就加上const去修飾。一出手就要不凡。(侯捷老師的話,哈哈哈)

c 類成員函式後邊加const

class accesslevels int setwriteonly int value private int read only int write only c 在函式後加const的意義 一 我們定義的類的成員函式中,常常有一些成員函式不改變類的資料成員,也就是說,這些函式是 唯讀 函式,...

C 類成員函式後面加const

如果類的成員函式後面加了const關鍵字,說明這個函式是不能改變類中的成員變數的。如果在編寫該函式會修改類中的成員變數,編譯時會出錯,並且也提高了程式的可讀性,當我們看到函式後面有const的話就知道這個函式是不會修改類中資料的。注意 1 只能加在非靜態成員函式後面,加在靜態成員函式和普通函式後面會...

用detours對C 類成員函式加鉤子

我所遇到的問題是,我想給乙個flash中的某個函式加鉤子,我知道這個函式的位址,但是它是乙個c 的類成員函式。detours的安裝目錄下的samples member就是乙個如何對c 的類成員函式加hook的例子。假設原來的函式宣告是 class cmember 一般來說,類成員函式都是遵守 thi...