原則:類的成員函式在小括號後大括號前加上 const ,代表不準備改變物件的資料。不加的話代表有可能會改變物件的資料。
1.當常量物件,就是加上const修飾的類的成員去呼叫常量成員函式時,這表示:物件的初始化資料一定不能改變,常量成員函式說:放心,我不會改變你的初始化資料的,這一切都很好。
2.當常量物件呼叫沒加const修飾的類的成員函式時,這表示:物件的初始化資料一定不能改變,非常量成員函式說:我不能保證哦!完犢子,沒商量好,這要出問題。
3.當非常量物件呼叫常量成員函式時,這表示:物件的初始化資料可以被改變,常量成員函式說:我並不打算改變你的資料。這,很和諧!
4.當非常量物件呼叫非常量成員函式時,這表示:物件的初始化資料可以被改變,非常量成員函式說:你呼叫我,我有可能會改變你的資料哦,這個物件說:改就改嘍,我本來就沒打算一輩子不改。嗯,氣氛還挺好。
舉例:singledog.h標頭檔案:
#pragma once#includeview codeusing
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()
singledog.cpp原始檔:
#include"view codesingledog.h
"int
main()
小結:設計類的成員函式時,只要不準備改變物件的資料,就加上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...