# 來源
有些數據是需要共享,但是又不希望別人隨意改動,用const來修飾,使其成為常量
# 常對象
## 特點
數據成員受到保護,不可改變
必須有初值
不可調用該常對象中的非const類型的成員函數,避免修改該常對象中的數據成員
## 定義方式
const 類名::對象名(實參列表)
類名 const 對象名(實參列表)
# 常成員函數
## 特點
可以訪問數據成員,但是不允許修改
## 定義方式
成員函數 const
# 常數據成員
## 特點
常對象中的數據成員,都是常數據成員,不能被改變,只能在構造函數中賦值
# 規律
| **數據成員** | **非**const成員函數 | **const**成員函數 |
| --- | --- | --- |
| **非const成員** | **可以引用**,**也可以改變值** | **可以引用**,**但不可以改變值** |
| **const數據成員** | **可以引用**,**但不可以改變值** | **可以引用**,**但不可以改變值** |
| **const對象數據成員** | **不允許引用** **和改變值** | **可以引用**,**但不可以改變值** |
## 指針常量
將指針聲明為常量,指針值始終不變,指向不變,不可通過該指針,改變值
## 定義方式
類名 \*const 指針變量名=對象地址
## const變量小結
| **形參** | **實參** | **合法否** | **改變指針所指向的變量**(**對象**)**的值** |
| --- | --- | --- | --- |
| **指向非const型變量(對象)的指針** | **非const型變量(對象)的地址** | **合法** | **可以** |
| **指向非const型變量(對象**)**的指針** | **const型變量(對象)的地址** | **非法** | **/** |
| **指向const型變量(對象)的指針** | **const型變量(對象)的地址** | **合法** | **不可以** |
| **指向const型變量(對象)的指針** | **非const型變量(對象)的地址** | **合法** | **不可以** |
| 形式 | 含義 |
| --- | --- |
| **Time const t1;或const Time t1** | **t1是常對象,其值在任何情況下都不能改變** |
| **void Time∷fun( )const** | **fun是Time類中的常成員函數,可以引用,但不能修改本類中的數據成員** |
| **Time \* const p;** | **p是指向Time類對象的常指針,p的值(即p的指向)不能改變** |
| **const Time \*p;** | **p是指向Time類常對象的指針,其指向的類對象的值不能通過指針來改變** |
| **Time &t1=t;** | **t1是Time類對象t的引用,二者指向同一段內存空間** |
~~~
#include <iostream>
using namespace std;
?
class Time
{
public:
? Time(int,int,int);
? ? ? int hour;
? ? ? int minute;
? ? ? int sec;
};
?
Time∷Time(int h,int m,int s) //定義構造函數
{
hour=h;
? minute=m;
? sec=s;
}
?
void fun(Time &t) ? //形參t是Time類對象的引用
{
t.hour=18;
}
? ?
int main( )
{
Time t1(10,13,56); ? ? // t1是Time類對象
? fun(t1); ? ? ? ? ? ? ? ? ? ? ?
? //實參是Time類對象,可以通過引用來修改實參t1的值
? cout<<t1.hour<<endl; //輸出t1.hour的值為18
? return 0;
}
~~~
- 介紹
- 編程設計語言
- 第一章 對C++的初步認識
- 1.2 最簡單的C++程序
- 1.3 C++對C的補充
- 1.3.1 return
- 1.3.2 輸入輸出流
- 1.3.3 putchar 和 getchar
- 1.3.4 用const定義常變量
- 1.3.5 函數原型聲明
- 1.3.6 內置函數
- 1.3.7 函數重載
- 1.3.8 函數模板
- 1.3.9 有默認值的參數
- 1.3.10 作用域
- 1.3.11 const修飾指針
- 1.3.12 引用
- 1.3.13 生命期
- 1.3.14 變量
- 1.3.15 字符串變量
- 第二章 類與對象
- 2.2 類的聲明和對象的定義
- 2.3 類的成員函數
- 第三章 關于類和對象的進一步討論
- 3.1 構造函數
- 3.1.1 對象的初始化
- 3.1.2 構造函數
- 3.2 析構函數
- 3.3調用析構函數和構造函數的順序
- 3.4 對象數組
- 3.5 對象指針
- 3.6 共享數據的保護
- 3.7 對象的建立與釋放
- 3.8 對象的賦值與復制
- 3.9 靜態成員
- 3.10 友元
- 3.11 類模板
- 第四章 運算符重載
- 數據類型轉換
- 運算符重載
- 重載流插入運算符和流提取運算符
- 第五章 繼承與派生
- 繼承與派生
- 第六章 多態性與虛函數
- 多態性
- 虛函數
- 純虛函數與抽象類