C++的基礎知識
頭檔案
一個類可以放在一個.cpp.h檔案中
成員變數
- 本地變數(local variable):作用域只在函式運行時
- 成員變數(Fields):作用域-類中
- 成員變數名=本地變數名時,根據就近原則,成員變數被屏蔽掉
- 成員變數不在類中而是在類的物件里面 看注釋
#include <iostream>
using namespace std;
class A
{
private:
int i; //宣告i
public:
void f();
};
void A::f()
{
i=10;
}
int main()
{
A a; //定義i
a.f();
return 0;
}
成員變數秘密
- 宣告和定義 --是否告知where
- i屬于物件
- 函式屬于類
- this指標的存在
構造析構
- 構造無回傳型別,可傳參
- 析構無回傳型別,無傳參
#include <iostream>
using namespace std;
class A
{
private:
int i;
public:
void f();
A(); //構造
~A(); //析構
};
void A::f()
{
i=10;
cout <<"i="<<i <<endl;
}
A::A()
{
i=0;
cout<<"構造執行"<<endl;
}
A::~A()
{
cout<<"析構執行"<<endl;
}
int main()
{
A a;
a.f();
return 0;
}
物件初始化
- default construction :沒有引數
- new: 分配空間,呼叫構造//回傳地址
- delete +地址:呼叫析構
- new int[] delete [] p //不只有一個物件
- new 動態申請陣列
訪問屬性
- public:公開
- private:私有
- protected :子孫和自己
- friend:友元 //你申明別人是你的友元
初始化串列
- A():p(0){}
- A(int i):p(i){}
A(int i):p(i){}
A(int i):{p=i}的區別
1.初始化
2.賦值
物件組合
- 物件組合(外)
- 父類(內)
繼承
多載默認引數
- 回傳型別不能構成多載
- 盡量使用已有的代碼進行多載
- 子類構造會自動呼叫父類建構式
- 用子類去呼叫父類構造
- 字父類間有名字相同的函式
- 發生名字隱藏,父類函式及多載被隱藏
預設引數
- default argument:拒絕使用
- where:.h
行內函式
- what :inline
- where :.h //宣告
- example:成員函式,宣告的時候寫函式體可以行內、或者直接放在后面
const
- 本質:變數
- Pointer:char *const p 指標本身是const
- p不能修改,p的內容可以修改
- const char *p 指向const char 型別
- *前面物件const,后面星號是const
- int date()const{}函式const this是const
- 成員變數const 初始化串列初始化
參考
- reference:char &r=c 定義的時候初始化,別名
- 為了讓代碼少一點*
向上造型
- 子類當做父類看
多型
- virtual 虛函式 子類和父類同名函式有聯系
- 通過指標參考呼叫時,不能確定是什么型別,運行的時候才能確定
- void render(shape*P)
- upcast dynamic binding(virtual)




多型實作
- 類首有一個指向vtable的指標
- 析構多型virtual
- overriding
參考2
- 傳大的引數:使用const int&
- 函式回傳型別有const
拷貝構造
-
物件傳參:復制引數沒有執行構造
-
定義的時候classname a=b 發生拷貝構造
-
T::T(const &T)
-
成員是指標時會發生指標拷貝

-
happen:呼叫函式() 回傳物件
-
default construction 、、 virtual 、、copy
靜態物件
-
static where、who see

-
構造只發生一次
-
靜態成員 A::a
-
靜態函式 A::fun 不能訪問非靜態成員變數

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/286987.html
標籤:其他
上一篇:嵌入式開發真的不如程式員嗎?
下一篇:設計模式-責任鏈模式
