C (物件的構造 18課(中))

2021-10-01 15:31:24 字數 1255 閱讀 2125

帶有引數的建構函式

建構函式可以根據需要定義引數

乙個類中可以存在多個過載的建構函式 ,建構函式的過載遵循c++過載的規則

(因為引數初始化也是有不同的需求的,所以初始化有必要過載使用)

友情提示

物件定義和物件宣告不同

物件定義-申請物件的空間並呼叫建構函式

物件宣告-告訴編譯器存在這樣乙個物件

例項1:

#include class test

test(int v)

};int main()

執行結果

test()

test(int v), v = 1

test(int v), v = 2

i = 100

小結:注意   int i=0; 和   i=0;的區別(乙個是初始化,呼叫建構函式。乙個是賦值,不呼叫建構函式)

下面構造乙個小的例項來說明:

需求:開發乙個陣列類解決原生陣列的安全性問題

提供函式獲取陣列長度

提供函式獲取陣列元素

提供函式設定陣列元素

intarray== 陣列類==的實現 intarray.cpp intarray.h main.cpp

分析:獲取的陣列長度 以及陣列內容可以作為類的私有成員變數;

建構函式一開始就指定陣列的長度,加上陣列內容的初始化啦;

1.**件

#pragma once

#ifndef _intarray_h_

#define _intarray_h_

class intarray

;#endif

2.cpp檔案

#include "operator.h"

#include using namespace std;

intarray::intarray(int len)

{ m_pointer = new int[len];

for (int i = 0; i3.main函式

#include"operator.h"

#include int main()

{ intarray a(5);

for (int i = 0; i這裡沒有使用函式的析構函式來釋放陣列變數所占有的記憶體空間,後面的內容應該會講。

所謂陣列保護就是,設定陣列的值的函式 索引要有一定的限制。

第19課 物件的構造下

本文內容取自於對狄泰學院 唐佐林老師 c 深度解析 課程的學習總結 兩個特殊的建構函式 無參建構函式 沒有引數的建構函式 拷貝建構函式 引數為const class name 的建構函式 無參建構函式 拷貝建構函式 程式設計實驗 特殊的建構函式 include class test int test...

第19課 物件的構造(下)

1 無參建構函式 當類中沒有定義建構函式時,編譯器預設提供乙個無參建構函式,並且其函式體為空。2 拷貝建構函式 當類中沒有定義拷貝建構函式時,編譯器預設提供乙個拷貝建構函式,簡單的進行成員變數的值複製。1 include 2 3class test413 intgetj 1417 18 test c...

C 學習筆記 第19課 物件的構造(下)

拷貝建構函式 注意 編譯器提供的拷貝建構函式只進行淺拷貝成員指向的動態記憶體空間 成員開啟了外存中的檔案 成員使用了系統中的網路埠 問題引出 include class ctest void setj int ival ctest ctest const ctest t intgeti intget...