cosnt成員資料的初始化
const可以用來宣告常量也就是說他的值不能被修改;
const成員必須在定義的時候同時初始化,不能進行賦值
如 const int a;a的值不能修改,不能給它賦值,如何才能讓它一開始就擁有一個值?
1、在宣告的時候對他進行初始化
const int a=1;
2、在函式中宣告的形參,在函式被呼叫時會得到實參的值。
但是如果在類中呢?
class Demo
{
const int ci;
public:
void get_ci()
{
return ci;
}
};
當直接用這個類定義一個物件時,會出錯,提示沒有初始化const成員變數值 且提示ci是一個只讀的變數。
const用於類中成員變數時,將類成員變為只讀屬性
(只讀:不能出現在“=”的左邊,但在類中仍可以用一個指標來修改其值。) 所以不可以直接在類的建構函式中初始化const 的成員
。
const成員變數只可以初始化列表中初始化
程式碼:
#include<iostream>
using namespace std;
class Demo
{
private:
const int ci;
public:
Demo() :ci(10)
{
}
int getci()
{
return ci;
}
int setci(int i)
{
int* mi =(int *) &ci;
*mi = i;
return ci;
}
};
int main()
{
Demo d;
cout << "ci=" << d.getci();
d.setci(90);
cout << "ci=" << d.getci();
getchar();
return 0;
}
初始化列表是先於建構函式的函式體執行
,
並且成員的初始化列表與成員的宣告順序相同的
C語言中的const其實只是只讀變數可以用指標間接改變其值
const修飾的區域性變數在棧上分配記憶體空間
const修飾的全域性變數在只讀儲存區分配內儲存空間
#include <stdio.h>
int main(void)
{
const int a=0;
int *p= &a;
*p=5;
printf("*p=%d\n",*p);//5
printf("a=%d \n",a);//5
printf("&a=%p p=%p",&a,p);//相同
return 0;
}
相關文章
- C++中的static成員、static const成員和const成員的初始化C++
- 類成員變數的初始化變數
- 12-成員變數的初始化變數
- java基礎-初始化與清理-成員初始化Java
- c#類的成員初始化順序C#
- c++成員變數初始化C++變數
- 類的成員變數的初始化順序變數
- 靜態資料成員和靜態成員函式函式
- 物件資料成員的初始值物件
- 都是指標資料成員“惹的禍”指標
- C++ 靜態資料成員C++
- C++類的靜態成員變數初始化C++變數
- 探討Java類中成員變數的初始化方式Java變數
- 如何成為資料庫管理員(DBA)?資料庫
- C++ 成員資料指標成員函式指標簡單測試C++指標函式
- Java基礎02 方法與資料成員Java
- 使用屬性而不是可訪問的資料成員
- c++物件導向程式設計 常資料成員的使用C++物件程式設計
- C++ 建構函式 explicit 關鍵字 成員初始化列表C++函式
- 作為資料庫核心成員,如何讓淘寶不卡頓?資料庫
- 主資料治理的成功取決於“強有力的”團隊成員XM
- 類的域(field ,資料成員)是基本型別時的預設值型別
- TypeScript 中 class 的例項成員與靜態成員TypeScript
- C++類中的常成員和靜態成員C++
- 美創科技正式成為“資料安全強基計劃”成員單位
- Apache新成員:LinkedIn分散式資料整合框架GobblinApache分散式框架Go
- 第3周專案5-陣列作資料成員(1)陣列
- 第3周專案5-陣列作資料成員(2)陣列
- 第3周專案5-陣列作資料成員(3)陣列
- 第3周專案5-陣列作資料成員(4)陣列
- 第3周專案5-陣列作資料成員(5)陣列
- MDX中使用成員屬性-資料庫專欄,SQL Server資料庫SQLServer
- 成員方法的this指標指標
- MongoDB 初始化資料同步MongoDB
- 資料庫表初始化資料庫
- oa資料庫初始化資料庫
- postgresql資料庫初始化SQL資料庫
- PG資料庫初始化資料庫