const修飾成員函式const修飾物件
{
public:
int age;
mutable int weight;
static int a;
void setvalue()const
{
//age = 20;錯誤,const修飾的普通成員函式,不能修改類中的普通成員
weight = 75;//const修飾的成員函式,可以更改用mutable修飾的普通成員變數
a = 3;//類中的靜態成員變數,不在類中,可以修改
}
void printperson()
{
cout << age << " " << weight << " " << a << endl;
}
};
int person::a = 0;
void test()
{
const person per;
per.setvalue();//常物件只能訪問常成員函式
//per.printperson();常物件不可以訪問非常成員函式
per.a = 1;//常物件可以訪問並修改static成員
int v = per.age;//常物件可以訪問普通成員變數
//per.age = 2;常物件不可以修改普通成員變數
per.weight = 80;//常物件可以修改用mutable修飾的成員變數
}
相關推薦
const修飾成員函式const修飾物件
class person { public:int age;mutable int weight;static int a;void setvalue()const{//age = 20;錯誤,const修飾的普通成員函式,不能修改類中的普通成員weight = 75;//const修飾的成員函式,可以更改用
C++筆記(七)——類3:const修飾成員函式
一、const修飾的成員函式 由於成員函式可以任意訪問類內的任何資料成員,但當我們不願意讓成員函式修改資料成員時,我們可以用const修飾類的成員函式,一般形式為: class CName { private: ......
C++ const 修飾成員函式
2 用const修飾函式的返回值如果給以“指標傳遞”方式的函式返回值加const修飾,那麼函式返回值(即指標)的內容不能被修改,該返回值只能被賦給加const 修飾的同類型指標。例如函式const char *GetString(void);如下語句將出現編譯錯誤:char *str = GetString(
解密之------const型別物件只能訪問const型別成員函式
在學習const修飾的物件時,我們總會聽到const和非cosnt間的訪問原則如下: const型別物件可以訪問非const型別成員函式,但是不能訪問const型別成員函式。 在一個物件呼叫
C++的const類成員函式
我們知道,在C++中,若一個變數宣告為const型別,則試圖修改該變數的值的操作都被視編譯錯誤。例如, constchar blank = ‘’; blank = ‘\n’; // 錯誤 面向物件程式設計中,為了體現封裝性,通常不允許直接
c++ const類成員函式
我們知道,在C++中,若一個變數宣告為const型別,則試圖修改該變數的值的操作都被視編譯錯誤。例如, constchar blank = ‘’; blank = ‘\n’; // 錯誤 面向物件程式設計中,為了體現封裝性,通常不允許直接
C++ const 引數 成員函式 規則
看到const 關鍵字,C++程式設計師首先想到的可能是const 常量。這可不是良好的條件反射。如果只知道用const 定義常量,那麼相當於把火藥僅用於製作鞭炮。const 更大的魅力是它可以修飾函式的引數、返回值,甚至函式的定義體。 const 是constant 的縮寫,“恆定不變
this 指標的地址--呼叫成員函式的所在物件的起始地址
#include<iostream> using namespace std; class Test { int x; public: Test(int a){ x=a; } void get_this(); }; void Test:: get_this() { co
C++回顧之static成員、static成員函式及類物件大小計算
C中的static使用比較簡單,都不陌生了,C++中static關鍵字在類中的使用需要注意一些細節。static在類中修飾的是資料成員以及成員函式,分別稱之為靜態資料成員及靜態成員函式。 先來看看static靜態資料成員的目的及使用:
C++基礎知識(六)--類--成員函式的定義--物件的建立與使用--從面向過程到面向物件
一、類 1.類是一種資料型別,將資料與對資料的操作(函式)放到一起。一個類中的資料通常只能通過本類提供的方法進行處理,這些方法成為該類與外部的介面,物件之間通過訊息進行通訊。 2.如果在類的起始點無訪問說明符,系統預設為私有(private) 3.類是一種資料型別,定義時系統不為類分配儲存空
c++常成員函式和常物件的注意事項
1.什麼是常成員函式 常成員函式,它就是在成員函式後面加一個const,用來修飾this指標所指的物件,使this指標所指的物件不受更改,保護它的資料安全。當常成員函式沒有引數的時候修飾的是this指標,有引數的時候就是修飾的引數和this!!反正就是不能變一切!! 除非
const修飾類的成員函式
一、概念 將const修飾的類成員函式稱之為const成員函式。const修飾類成員函式,實際修飾該成員函式隱含的 this 指標,表明在該成員函式中不能對類的任何成員進行修改。 二、 const 成員函式 (1)const 類成員函式中不能修改類的成員變數,const 修飾的是 thi
【C++面向物件】類的靜態資料成員(static修飾)和常資料成員(const修飾)的初始化
類的常資料成員(由const修飾)必須在建構函式的初始化列表裡被初始化,不能在建構函式的函式體中被賦值; 又因為建構函式可以在類內或類外實現,所以表面上看,常資料成員可在類內初始化,也可在類外初始化。如: 常資料成員在類外初始化 class A{ publi
const類物件與成員函式
const類物件,則只能呼叫const成員函式 #include <iostream> //const成員函式 class A { int a; public: A(int aa):a(aa){} //const成員函式:**表示該函式不會修改成員變數** vo
為什麼const物件只能呼叫const成員函式,而不能呼叫非const成員函式?
參考:http://www.cnblogs.com/cplinux/articles/5553716.html http://blog.csdn.net/lanxuezaipiao/article/details/41647333#comments 在c++中,我們可以
const物件與const成員函式
const物件只能呼叫const成員函式: #include<iostream> using namespace std; class A { public: void fun()const { cout<<"const 成員函式
const修飾符、const與指標一起使用(C++學習筆記 6)
一、 在C++中使用const修飾符來定義常量。(const來自單詞constant,是常量的意思) 用法:const 型別 常量名 = 表示式; 例如:const int LIMIT = 100; 這個常量LIMIT是有型別的,佔用儲存單元,有地址,可以用指標指向它,但不能修改它。
c++中,一個類中同名的const成員函式與非const成員函式為什麼可以構成過載
#include<iostream> using namespace std; class Test { public: Test(int v):data(v){} void print()//this指標的型別是Test * { cout<&
無視修飾符,不經過getter函式直接獲取物件的某個欄位的屬性值
直接上程式碼: public class ReflectionUtils { /** * 直接讀取物件屬性值, 無視private/protected修飾符, 不經過getter函式. */ public static Object getFieldValue(fin
GLSL ES 中的儲存變數修飾符(const/attribute/uniform/varying/in/centroid in/out/centroid out)
GLSL ES 3.00 中支援的儲存變數修飾符 變數名稱 作用 示例 const 編譯過程常量,或者函式的只讀引數 const vec3 zAxis = vec3 (0.0, 0.0, 1.0);