一般的頭文件的布局:
#ifndef _NAME_
#define_NAME_???????? \\防衛(wèi)式聲明
#include<使用到的頭文件>
class A;???? \\前置聲明
class A{......};???????? \\類的聲明
A::function(){}???????? \\類中成員函數(shù)的類外定義
#endif
一般的class定義的布局:
class A {
private:?????????????????? \\私有成員
??????? int x,y;???????? \\私有數(shù)據(jù)成員
?????? friend B();????? \\友元函數(shù)的聲明,友元函數(shù)可以訪問類中的數(shù)據(jù)
public:????????????????? \\公有成員
????? A(int a,int b):x(a),y(b){}??????? \\類初始化列
???? A& operator +=(const A&);??? \\運(yùn)算符重載聲明
};
class定義布局使用模板:
template<typename T>
class A{
private:
???? T x,y;
public:
? A(T a,T b):x(a),y(b){}
? A& operator +=(const A&);
};
int main(){
A<int> a1(1,2);
A<float> a2(1.0,2.0);???????????? \\通過使用模板使不同類型的類的使用更方便
return 0;
}
類外函數(shù)定義的布局:
inline A& A::operator +=(const A&){
this->x+=r.x;
this->y+=r.y;
return *this;
}
tips:
1.相同class的各個(gè)對象互為友元;
2.可以有多個(gè)參數(shù)設(shè)定不同的操作符重載;
3.static靜態(tài)成員可以在類中被任意成員訪問;
4.const成員在被引用后不會改變原來的值;
5.參數(shù)的傳遞最好以引用的方式傳遞,這樣可以提高效率,C++是一種注重效率的語言;
6.同理返回值的傳遞最好也是通過引用來傳遞,但當(dāng)返回的是局部變量時(shí)不能使用引用來返回值;