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...