C++學習筆記lesson 8 c++&object c review

C Plus

bool

c語言中使用int當bool使用

bool和int 轉換 

int -> bool  非0爲true , 0爲fasle

bool ->  int   true 爲1   false 爲0  

int n = 3;
bool b = n;
n = b;//    n = 1

const 

將一個變量變成常量 , 編譯器在語法層面上對當前const修飾的變量進行檢測,當有人對其進行修改的時候,編譯器會報錯

本質上的常量是存放在常量區的常量,#define 定義的宏

具有類型的常量

編譯時分配空間 :更方便進行調試

作用域

域運算符

命名空間,代表作用域

new  delete 

運算符  能重載

在堆當中分配空間,

malloc 不會調用構造函數

 free  不會調用析構函數


函數的重載

返回值不同不能構成重載

函數的重載與參數相關,順序不同也能重載

const修飾返回值 與重載沒有關係(const函數在類裏面修飾成員函數使用,可以構成重載)

int Foo(int num)
{
	return num;
}
int Foo(float num)
{
	return num;
}
int main()
{
	Foo(1.0003);
	//傳遞double的數,因爲都可以向下轉換爲int 和 num,會產生二義性
	//解決 指明調用的類型
	Foo(static_cast<float>(1.0003));
	return 0;
}

引用

一旦確定就無法修改

int& Foo(int &num)//返回值爲引用,表示返回值的引用,並且生命週期不能結束
{
	 num=100;
	 int other = 1;
	 return other;
}
 //返回的是other的引用 ,other是臨時變量,值未知
int main()
{
	int num = 1;
	Foo(num)=1; 
	// num =100; 
	return 0;
}

類型轉換

 c風格強制轉換(int)

inline 內聯函數

在調用的時候,直接進行展開(由編譯器決定)。相當於宏,替換的時候會進行檢測。


Object 

訪問權限

公用  public

私有  private

保護  protected

構造函數

默認的構造函數裏面是一個空函數,什麼都沒做。在進行實例化的時候,必須調用構造函數。

默認構造,不需要傳參的 Demo(int num=0) 等同於構造函數

構造函數可以重載

構造函數初始化列表 Demo():num_(num){}


class Demo
{
public :
	Demo(int num = 0):num_(num),rnum(num),cnum(num)//初始化列表才屬於初始化
	{
		num_ = num;
		rnum = num;//必須初始化引用
		cnum = num;//必須初始化常量限定類型的對象
		//這裏屬於賦值
	}
private:
	int num_;
	int &rnum;//引用
	const int cnum;//const變量 必須在初始化列初始化
};

拷貝構造函數

默認的空拷貝構造函數會自動淺拷貝

Demo demo;

Demo demo1 = demo; //調用拷貝構造

Demo Foo(Demo demo) //入參
{
	return demo; //作爲返回值 ,也會調用拷貝構造
}

運算符重載

單目運算符重載爲成員函數

雙目運算符重載爲友元函數

. = () [] -> 無法重載爲友元函數

類型轉換運算符只能重載爲成員函數

流運算符只能以友元方式重載

class Demo
{
public :
	Demo(int num = 0):num_(num){}
	void Open() {}
	void Close() {}
private:
	int num_;
};

class MyPoint //智能指針,能夠在合適的時候進行釋放
{
public:
	MyPoint()
	{
		demo_ = new Demo();
	}
	MyPoint()
	{
		delete demo_;
	}
	Demo *operator->()
	{
		return demo_;
	}
	
private:
	Demo *demo_;
};


int main()
{
	MyPoint point;
	point->Open();
	return 0;
}


發佈了103 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章