第一周
20170407
類:帶指標
1、 不帶指標
object based(基於物件):
單一物件
object oriented(物件導向):
多個有關聯的物件
語言學習:
語言+標準庫
標頭檔案寫法(防衛式宣告):
#ifndef _complex_
#define _complex_
//前置宣告
//類的宣告
//類的定義
#endif 作用:無重複include 包含
inline(內聯)函式:
若函式在class內定義完成,便自動成為inline「候選人」。(最後不一定是,取決於編譯器的處理)
#ifndef _complex_h_
#define _complex_h_
//template ;
class complex
private:
double re, im;
};inline double complex::imag()const
inline void complex::setre(double num)
inline void complex::setim(double num)
#endif
帶預設引數的預設建構函式
建構函式
盡量所有的引數、返回值都傳遞引用
傳遞引用加const表示該值不能被改變: complex & operator +=(const complex&);
函式後面加上const
double real () const
不會改變資料內容
const類物件呼叫的成員函式也必須是 const函式
帶預設引數的預設建構函式
complex(double r = 0, double i = 0) :re(r), im(i){}//帶預設引數的預設建構函式
不帶指標的類多半不用析構函式
函式過載
double imag(double r)//過載
double imag()const;
但在編譯後的實際名稱不同。
易錯:以下建構函式不能過載:
complex(double r = 0, double i = 0) :re(r), im(i){}
complex() :re(0), im(0){}
友元函式
class complex
complex& operator += ( const complex&);
double real () const
doube imag () const
private:
double re,im;
friend complex& _doap1 (complex *,const complex&);
};inline complex& _doap1 (complex* fir,const complex& r)
相同class的各個objects互為friends(友元函式)
class complex
int func (const complex ¶m)
private:
double re,im;
};例:
complex.h
class complex
//帶預設引數的預設建構函式
void setre(double num);
void setim(double num);
double imag(double r)//過載
double imag()const;
double real()const
private:
double re, im;
};class friend_complex//友元函式
double outfri()const
double outfim()const
private:
double fri, fim;
};inline double complex::imag()const
inline void complex::setre(double num)
inline void complex::setim(double num)
#include
#include"complex.h"
using namespace std;
int main()
20170409
操作符過載
返回值可以用於操作符的連串使用
特殊的操作符用全域性函式
「<<」操作符應定義為非成員函式
ostream&
operator<< (ostream& os,const complex& x)//引數次序決定cout的位置
int main()
complex& operator +=(const complex&r)
#include
#include"complex.h"
using namespace std;
int main()
非成員函式的寫法
inline complex//非引用,因為是區域性變數
operator + (const complex& x,const complex&y)
inline complex//非引用
operator+(const complex&x,double y)
typename();//構造臨時物件,進行到下一行結束生命
return 不用reference 語法分析
傳遞者無需知道接受者是以reference形式接受;
不含static成員函式的物件呼叫成員函式的方式
complex c1,c2,c3;(real()不是static型別)
cout<
using namespace std;
#include"head.h"
double account::m_rate = 8.0;//初值化
int main()
結論:可以看出,直接通過class name呼叫時,可以直接改變之前object的static公有成員。私有成員不能通過classname呼叫
把建構函式放在private內(與static有關):
//只有乙個物件的類
class a
private:
a();
a(const a&rhs);…};
a& a::getinstance()
呼叫函式:
a::getinstance().setup();//使用class name呼叫
例:#ifndef _lyfstatic_
#define _lyfstatic_
class account
static account& set_rate(const double&x);
static double m_rate;
static account&creatraccount();
private:
account(const double&snu)
};account& account::set_rate(const double&x)
#endif
#include
using namespace std;
#include"head.h"
double account::m_rate = 8.0;
int main()
class template
#ifndef _lyfstatic_
#define _lyfstatic_
template
class account
account(const t &snu):m_rate(snu)
private:
t m_rate;
};#endif
#include
using namespace std;
#include"head.h"
int main()
優秀模板例:
#ifndef _lyfstatic_
#define _lyfstatic_
class stone
bool operator<(const stone&s)const
private:
int _w, _h, _weight;
};template //函式模板,不必明確指出型別
inline
const t & min(const t &a, const t &b)
#endif
#include
using namespace std;
#include"head.h"
int main()
Boolan c 學習第一周筆記
1.一種基於物件 object based 這種是單一的類的設計 一種物件導向 object oriented 多重class的設計 對於類中的變數和函式而言,資料有很多份但是函式只有乙份。2.標頭檔案的正規寫法 ifndef 頭檔名 define 頭檔名 endif 採用了防衛式宣告。3.c 中的...
Boolan STL 第一周筆記
容器是用來儲存資料的,資料可以試使用者自定義的類,也可以試預定義的型別。c 中的容器主要使用有array vector list set map等。stl中的容器裡都有分配器,在宣告乙個容器的模板第二個引數就是分配器。分配器是用來給容器分配記憶體的,在一般情況下,使用預設的分配器即可。在stl中要實...
第一周周記
下面是整個文章的第二部分,日常的安利 這周的話,除了整體恢復正常,週末我也購置了我的第一塊外接鍵盤,這裡的話我選擇的是國產的靜電容鍵盤niz的plum 87鍵鍵盤。今天拿到這個鍵盤第一天,整體使用了一下,尺寸配合著15寸的蘋果macbook pro可以說恰到好處,除此以外,整個鍵盤還是給我不少驚喜的...