(二)函數相關
首先來說c++中將函數的聲明以及定義是分開的
例如:
class Demo{
//這里注意的是c++的特有定義方法
public:
//聲明函數
void getDemo();
void setDemo();
private:
//聲明成員
int i;
int x;
//定義函數方法一:
void getDemo(){
//do things
}
void setDemo(){
//do things
}
}
//定義函數方法二
void Demo::getDemo(){
//do things
}
void Demo::setDemo(){
//do things
}
內聯函數
//在c++中 一般來說定義了一個函數后,編譯器就會在內存中為其創建一個指令集,當我們調用這個函數時,程序就會跳轉到該指令集處.當該
//函數運行完畢后,程序又會返回到原來執行調用該函數的下一行繼續執行.加入對該函數執行了上百次調用,那么就要來回跳轉上百次,很明顯
//這是相當影響程序執行效率的。所以就有了內聯函數,即:用關鍵字inline聲明函數。這樣編譯器將不會創建真正的函數,而只是將這個內聯
//函數的所有代碼拷貝到調用函數中,這樣程序在執行調用該函數時就不需要來回跳轉,自然就會提供了程序運行時的效率,但是如果程序調用了
//內聯函數一百次,那么就要將該內聯函數中的代碼復制一百次,無形中增加了程序的體積,所以內聯函數大多使用體積比較少的函數中
//當方法的聲明與定義在同一行時也為內聯函數
//個人看法:雖然內聯函數減少了編譯器的跳轉次數,但是對于copy函數來說也無形中的增加了電腦cpu的負載(cpu的運行原理就不說了,不知
//道的自己找些資料吧),所以總體來說可能是c++語言的編譯器本身設計不合理,當然我只是隨便評論,畢竟做c++語言是群很牛的人這樣做或許
//有著不為人知的道理?歡迎大家糾正我的觀點 來盡情的噴我吧^_^!
//如果是在當前類里 c++是不需要加 public等權限修飾符的
inline int print();
int print(){
return 1;
}
const成員函數
//如果你不想讓某個成員函數修改成員變量的值,那么不妨將這個成員函數聲明為const,相當于java中的final
class A{
public :
void func(int x,int y){i=x;j=y}
//const的使用,通常放在()的后面,{}的前面
void print()const{cout<<"兩數相乘為:"<<i*j<<endl;}
private :
int i;
int j;
}
//對于不應當改變對象的成員函數都應該聲明為const,這樣假如該成員函數試圖去修改該對象的成員變量,編譯器會提示錯誤,從而達到
//幫助你查錯的目的。
int main(){
A a;
a.func(1,2);
a.print();
A b;
b.func(3,4);
b.print();
return 0;
}
析構函數
//析構函數與構造函數想法,構造函數用于構造一個對象,析構函數則用于對對象被銷毀后清除它所占用的內存空間,比如說它可以清除由析構
//函數創建的內存。
//注意:一個類只能有一個析構函數,無亂你以什么形式來重載析構函數,都會導致出錯
#include <iostream>
//使用命名空間
using namespace std;
class A
{
public:
A(){}
//析構函數,與構造函數的差別在于多了一個 ~符號 ,此方法是在類注銷時調用。
~A(){}
}
析構對象數組
//當要聲明很多對象,那么可以將對象聲明到一個數組中
int main(){
//編號為0的對象 以及編號為1的對象
//在創建由兩個對象組成的數組時,會先創建對象即調用兩次構造函數
//在調用結束后,會再調用兩次析構函數進行內存釋放
A a[2];
return 0;
}

浙公網安備 33010602011771號