1. 程式人生 > >C++常物件,常變數,長成員函式詳解(轉)

C++常物件,常變數,長成員函式詳解(轉)

  • const修飾的宣告資料成員稱為常資料成員
  • const修飾的宣告成員函式稱為常成員函式
  • const修飾的定義物件稱為常物件
變數或物件被const修飾後其值不能被更新。因此被const修飾的變數或物件必須要進行初始化。
(一)用const修飾的宣告資料成員稱為常資料成員

   有兩種宣告形式:

const int  cctwl;
int const  cctwl;
不能省略資料型別,可以新增 public private等訪問控制符。

說明:

  1. 任何函式能對常資料成員賦值
  2. 建構函式對常資料成員進行初始化時也只能通過初始化列表進行。
  3. 常資料成員在初始化時必須賦值或稱其必須初始化.
  4. 如果類有多個預設建構函式必須都
    初始化常資料成員。

通過下面例子來理解常資料成員以上4點。

A、請指出下面程式的錯誤

C++常物件,常變數,常成員函式詳解(轉)

錯誤一:不能對常資料成員在類中初始化、要通過類的建構函式,只有靜態常量才能這樣初始化。
錯誤二:沒有合適的預設建構函式可用。因為有常量cctwl沒有初始化必須初始化所有常資料成員。

更正後結果如下:

C++常物件,常變數,常成員函式詳解(轉)

B、多個建構函式下的常資料成員

請指出下面程式的錯誤:

C++常物件,常變數,常成員函式詳解(轉)
錯誤一:每個建構函式都要初始化常資料成員,應改為

C++常物件,常變數,常成員函式詳解(轉)
(二)用const修飾的宣告宣告成員函式稱為常成員函式

宣告:<型別標誌符>函式名(引數表)const

說明: 

  1. const是函式型別的一部分,在實現部分也要帶該關鍵字。
  2. const關鍵字可以用於對過載函式的區分。
  3. 常成員函式不能更新任何資料成員,也不能呼叫該類中沒有用const修飾的成員函式,只能調常成員函式常資料成員

A、通過例子來理解const是函式型別的一部分,在實現部分也要帶該關鍵字。

C++常物件,常變數,常成員函式詳解(轉)

B、通過例子來理解const關鍵字的過載

C++常物件,常變數,常成員函式詳解(轉)
C、通過例子來理解常成員函式不能更新任何資料成員

C++常物件,常變數,常成員函式詳解(轉)

D、通過例子來理解

1、常成員函式可以被其他成員函式呼叫。
2、但是不能呼叫其他非常成員函式。
3、可以呼叫其他常成員函式。

C++常物件,常變數,常成員函式詳解(轉)

(三)const修飾的定義物件稱為常物件

常物件是指物件的資料成員的值在物件被呼叫時不能被改變。常物件必須進行初始化,且不能被更新。

不能通過常物件呼叫普通成員函式,但是可以通過普通物件呼叫常成員函式。常物件只能呼叫常成員函式

常物件的宣告如下: 

     const   <類名>  <物件名>      <類名>  const   <物件名>

兩種宣告完全一樣沒有任何區別。

1、通過下面例子來理解常物件:

A、請指出下面程式的錯誤

C++常物件,常變數,常成員函式詳解(轉)
PS:

  • 常成員函式可以引用const資料成員,也可以引用非const的資料成員;
  • const資料成員可以被const成員函式引用,也可以被非const的成員函式引用;
  • 常成員函式不能呼叫另一個非const成員函式。

相關推薦

C++物件變數成員函式

用const修飾的宣告資料成員稱為常資料成員用const修飾的宣告成員函式稱為常成員函式用const修飾的定義物件稱為常物件 變數或物件被const修飾後其值不能被更新。因此被const修飾的變數或物件必須要進行初始化。(一)用const修飾的宣告資料成員稱為常資料成員

C++物件變數成員函式含新增內容

 既要使資料能在一定範圍內共享,又要保證它不被任意修改,可使用const。 ·        用const修飾的宣告資料成員稱為常資料成員 ·        用const修飾的宣告成員函式稱為常成員函式 ·        用const修飾的定義物件稱為常物件 變數或物件被c

綜合運用: C++11 多線程下生產者消費者模型

並發 rep 生產 我會 交流 模型 操作 const ref 生產者消費者問題是多線程並發中一個非常經典的問題,相信學過操作系統課程的同學都清楚這個問題的根源。本文將就四種情況分析並介紹生產者和消費者問題,它們分別是:單生產者-單消費者模型,單生產者-多消費者模型,多生產

C/C++中作用域

防止 局部作用域 gist 文件中 方式 為什麽不使用 形式參數 lan archive 作用域規則告訴我們一個變量的有效範圍,它在哪兒創建,在哪兒銷毀(也就是說超出了作用域)。變量的有效作用域從它的定義點開始,到和定義變量之前最鄰近的開括號配對的第一個閉括號。也就是說,作

C# ListView用法

分組 創建 cti 排列 checkbox 定義 com 程序 erl 一、ListView類 1、常用的基本屬性: (1)FullRowSelect:設置是否行選擇模式。(默認為false) 提示:只有在Details視圖該屬性才有

C++ 智能指針

include 復雜 測試類 信息 思想 編譯 應該 其他 eas C++ 智能指針詳解 一、簡介 由於 C++ 語言沒有自動內存回收機制,程序員每次 new 出來的內存都要手動 delete。程序員忘記 delete,流程太復雜,最終導致沒有 delete,異常導致程

extern "C"的使用

  extern "C"的主要作用就是為了能夠正確實現C++程式碼呼叫其他C語言程式碼。加上extern "C"後,會指示編譯器這部分程式碼按C語言的進行編譯,而不是C++的。由於C++支援函式過載,因此編譯器編譯函式的過程中會將函式的引數型別也加到編譯後的程式碼中,而不僅僅

C++繼承之二——派生類成員函式函式隱藏、建構函式與相容覆蓋規則

  在這一篇文章開始之前,我先解決一個問題。   在上一篇C++繼承詳解之一——初探繼承中,我提到了在派生類中可以定義一個與基類成員函式同名的函式,這樣派生類中的函式就會覆蓋掉基類的成員函式。   在譚浩強的C++程式設計這本書第十一章,351頁最下面有這麼

C++ 中malloc函式轉載

一、原型:extern void *malloc(unsigned int num_bytes); 標頭檔案:#include <malloc.h> 或 #include <alloc.h> (注意:alloc.h 與 malloc.h

C++之物件成員變數成員函式

一、常物件說明:常物件是指物件的資料成員的值在物件被呼叫時不能被改變。常物件必須進行初始化,且能被更新。不能通過常物件呼叫普通成員函式,但是可以通過普通物件呼叫常成員函式。常物件只能呼叫常成員函式

簡單生活踏實人生 兢兢業業學技術 踏踏實實誠做人

人員 好日子 發現 大學 踏實 arch 比較 家庭 我們 技術,現實!(勵誌篇--心若在,夢就在)   老同事離開 老同事老朱要走,送走老朱,大家都有點感嘆:老朱算是把計算機這條路走死了。老朱比我們都年長,而且老朱在IT路上已經走了20多年了,已經快四五十了,這些年過去了

Mysql加鎖過程9-innodb下的記錄鎖間隙鎖next-key鎖

ans 唯一索引 crazy cimage -h insert tran 存在 gin Mysql加鎖過程詳解(1)-基本知識 Mysql加鎖過程詳解(2)-關於mysql 幻讀理解 Mysql加鎖過程詳解(3)-關於mysql 幻讀理解 Mysql加鎖過程詳解(4)-

NGINX源碼安裝配置./configure最全解析

unzip roo without rpc服務 所有 googl 版本 並且 大文件 NGINX ./configure詳解 在"./configure"配置中,"--with"表示啟用模塊,也就是說這些模塊在編譯時不會自動構建&qu

當同時安裝Python2和Python3後如何兼容並切換使用比如pip使用

err 完美解決 執行文件 class 需要 提示 改名 launcher 順序查找 由於歷史原因,Python有兩個大的版本分支,Python2和Python3,又由於一些庫只支持某個版本分支,所以需要在電腦上同時安裝Python2和Python3,因此如何讓兩個版

C語言指標——對普通變數的指標操作和對陣列常量的指標操作

       我們知道,每一個變數都有一個記憶體位置,每一個記憶體位置都定義了可使用連字號(&)運算子訪問的地址,它表示了在記憶體中的一個地址。        我們喜歡在程式中使用指標代替陣列,因為變數指標可

malloc和free函式轉載只是為了查閱方便若侵權立刪

malloc和free函式詳解   本文介紹malloc和free函式的內容。   在C中,對記憶體的管理是相當重要。下面開始介紹這兩個函式:     一、malloc()和free()的基本概念以及基本用法: 1、函式原型及說明: void *malloc(lon

安卓專案實戰之強大的網路請求框架okGo使用:擴充套件專案okServer更強大的下載上傳功能支援斷點和多工管理

OkGo與OkDownload的區別就是,OkGo只是簡單的做一個下載功能,不具備斷點下載,暫停等操作,但是這在很多時候已經能滿足需要了。 而有些app需要有一個下載列表的功能,就像迅雷下載一樣,每個下載任務可以暫停,可以繼續,可以重新下載,可以有下載優先順序,這時候OkDownload就有

安卓專案實戰之強大的網路請求框架okGo使用:擴充套件專案okRx完美結合RxJava

前言 在第一篇講解okGo框架新增依賴支援時,還記得我們額外新增的兩個依賴嗎,一個okRx和一個okServer,這兩個均是基於okGo框架的擴充套件專案,其中okRx可以使請求結合RxJava一起使用,而okServer則提供了強大的下載上傳功能,如斷點支援,多工管理等,本篇我們主要講

安卓專案實戰之強大的網路請求框架okGo使用:實現getpost基本網路請求下載上傳進度監聽以及對Callback自定義的深入理解

1.新增依賴 //必須使用 compile 'com.lzy.net:okgo:3.0.4' //以下三個選擇新增,okrx和okrx2不能同時使用,一般選擇新增最新的rx2支援即可 compile 'com.lzy.net:okrx:1.0.2' compile 'com.lzy

還原資料庫資料庫提示正在還原中的處理辦法

轉載地址:https://www.cnblogs.com/shy1766IT/p/5189857.html   還原資料庫時,提示還原成功,可是資料庫列表中該資料庫顯示正在還原中: 執行此命令即可: RESTORE DATABASE EnterPriseBuilding WITH R