C 類學習(一)類的構造和使用

2021-10-06 11:31:02 字數 867 閱讀 4149

本文記錄在本地建立類,實用類的過程,目的是為了在刷leetcode時能夠本地除錯。

問題1:建立標頭檔案後,在定義建構函式時,函式使用的引數為類的成員變數,此時是否需要在引數前新增修飾限定?

這個問題很重要,要記住建構函式的引數表示的不是類成員,而是賦給類成員的值,個人理解就是建構函式的引數是形參,形式上的引數,相當於乙個代號,沒有實際意義,只是使用者與類之間進行互動的介面。既然建構函式的引數不能是類成員,那麼就不存在需不需要新增修飾限定的問題了。

問題2:問題1中提到了成員函式的引數,那如果不是建構函式的成員函式,其引數是否跟普通函式引數一樣 ?即在成員函式定義中,形參可以任意指定名稱?

最好不要使用類成員名作為成員函式的形參名。

問題3:編寫標頭檔案時,為了防止多次包含同乙個標頭檔案,使用預編譯指令

#pragma once

#ifndef ***

#define ***

...#endif

其中的#define語句為巨集定義,巨集名稱是不是標頭檔案的名稱???

個人理解:不是。這不是一碼事,一般的巨集定義的格式為「#define 巨集名 替換內容」,作用就是在編譯之前找到所有巨集名的位置,用替換內容替換掉巨集名,再進行編譯。這裡沒有替換內容,結合#ifndef和#endif語句,只是讓編譯器查詢**中是否有巨集名,有的話就不再執行省略號位置的**塊,沒有則執行。

問題3:在標頭檔案中定義類的時候,包含其他標頭檔案的問題。當我要為類定義乙個返回值為vector類的成員函式時,需要包含標頭檔案vector,但是在使用vector類的時候,不能直接用vector,被提示需要修飾限定,於是我無腦加了std::,竟然可以,這就很迷人了。。。因為我根本沒有包含標頭檔案iostream,因為命名空間是在標頭檔案iostream中定義的。

C 學習筆記(一) 類

c 使用關鍵字 class 來定義類。其基本結構如下 class myclass 定義這樣乙個類後,就可以在能訪問該定義的工程的其他地方對該類進行例項化。預設情況下,類宣告為內部的,即只有當前工程中的 才能訪問它。可以用internal 訪問修飾符關鍵字顯式指定,但這不是必須的,類在定義時預設為此型...

C 類和物件(一) 類和結構的區別

c 語言的主要模組,包括變數 資料型別和程式流語句,如何把這些內容組合在一起,構成乙個完整的程式,其關鍵就在於對類的處理。類和結構實際上都是建立物件的模板,每個物件都包含資料,並提供了處理和訪問資料的方法。類定義了類的每個物件 稱為例項 可以包含什麼資料和功能。例如,如果乙個類表示乙個顧客,就可以定...

C 學習(一) 類與物件

大二時學校開過物件導向程式設計 c 語言 的課,使用的是清華大學出版社,李愛華 程磊主編的教材。近兩年在學習和專案中一直使用c,對於c 已經忘記得差不多了。如今大四畢業之際開始學習qt開發上位機,需要用到c 使用原教材再次學習一次。類與物件是c 中兩個基本的概念。可以理解類是資料型別,物件是類定義的...