C 學習筆記2019 07 01

2021-09-24 21:12:33 字數 2558 閱讀 4297

ctrl+k+u 取消注釋

ctrl+k+c新增注釋

定義:無論你是否喜歡,物件的初始化和清理工作是編譯器強制我們要做的事情。程式自動呼叫。

class person

//析構函式寫法

//與類名相同 前面加乙個符號"~",也沒有返回值,不寫void,不可以有引數

//自動呼叫,只會呼叫一次

~person() };

總結: 1建構函式:沒有返回值 沒有void,類名相同, 可以發生函式過載, 可以有引數

2沒有返回值,沒有void,函式名稱:~類名, 不可發生=過載,不可以有引數

3如果程式設計師沒有提供構造和析構,系統會預設提供,空實現

分類:

1.按照引數進行分類 無參建構函式(預設建構函式) 有參建構函式

2.按照型別進行分類 普通建構函式 拷貝建構函式

## 2.建構函式的分類及呼叫注意事項

//分類

//按照引數進行分類 無參建構函式(預設建構函式) 有參建構函式

//按照型別進行分類 普通建構函式 拷貝建構函式

class person

person(int a)

**//拷貝建構函式**

person(const person& p)

~person()

int m_age;

};void test01()

預設情況下,c++編譯器為我們寫的類曾加3個函式

1.預設建構函式(無引數,函式體為空)

2.預設析構函式(無參, 函式體為空)

3.預設拷貝建構函式(無參,函式體為空)

使用者定義拷貝建構函式,c++不會再提供任何預設建構函式

如果使用者定義了普通構造(非拷貝),c++不在提供預設無參構造,但會提供預設拷貝構造

1.系統預設提供的拷貝構造 會進行簡單的值拷貝

2.如果屬性裡有指向堆空間的資料,那麼簡單的淺拷貝會導致重複釋放記憶體

3.解決上述問題,需要我們自己提供拷貝建構函式,進行深拷貝

//利用初始化列表初始化資料

//建構函式後面 + :屬性(引數), 屬性(引數)。。。

person(int a, int b, int c) : m_a(a), m_b(b), m_c(c)

1.當類物件作為類的成員時候,構造順序是先構造類物件的構造,然後構造自己

explicit防止隱式型別轉換

new person; //堆區開闢

delete person;//釋放

1.new物件 用void* 去接受,釋放不了物件

2.new建立的陣列,肯定會呼叫預設構造

#include"circle.h"

//設定半徑

void circle::setr(int r)

//獲取半徑

int circle::getr()

//設定圓心

void circle::setcenter(point p)

//獲取圓心

point circle::getcenter()

//利用成員函式判斷點和圓的關係

void circle::isincirclebyclass(point & p)

else if (rdistance > distance)

else

}

類的宣告

#pragma once

#include

using namespace std;

#include"point.h"

//圓類

class circle

;有兩種訪問方式

1.通過物件訪問屬性

2通過類名訪問資料

特點:1.所有物件共享資料

2.只能在類外賦值

1.可以訪問靜態成員變數,不可以訪問普通成員變數

2.普通成員函式都可以訪問

3.靜態成員函式也有許可權

4.可以通過物件訪問,也可以通過類名進行訪問

1.目的為了讓類中只有乙個例項,例項不需要自己釋放

2.將預設構造和拷貝構造私有化

3.內部維護乙個物件的指標

4對外提供getinstance方法來訪問這個指標

5保證類中只能例項化唯一乙個物件

單列模式固定格式

class printer

; printer(const printer& p) {};

public:

static printer* getinstance()

void printtext(string text)

private:

static printer* singleprinter;

int m_count;

};printer* printer::singleprinter = new printer;

1成員變數和成員屬性是分開儲存的

2.空類的大小為1

3.只有非靜態成員才屬於物件身上

C 學習筆記( )

一 語法 迴圈 foreach 型別識別符號 in 表示式 code 用法 例子int temp foreach int num in temp 每次從temp取乙個元素賦給num直至取完 console.writeline n num 每行顯示乙個元素 執行結果 c 中唯讀 只寫控制 class ...

C 學習筆記

1.函式特徵 有函式頭和函式體 接受乙個引數 返回乙個值 需要乙個原型。2.c 命名規則 在名稱中只能使用字母字元 數字和下劃線 名稱的第乙個字元不能是數字 區分大寫字母和小寫字母 不能將c 關鍵字用作名稱 以兩個下劃線或下劃線和大寫字母打頭的名稱被保留給實現 編譯器及其使用的資源 使用,以乙個下劃...

c 學習筆記

屬性 屬性開頭字母大寫 屬性可以判斷輸入的非法值 屬性本身不儲存值 依靠字段 索引器 using system using system.collections.generic using system.linq using system.text namespace b try catch exc...