freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c程序設計part2)(編輯修改稿)

2024-10-22 16:26 本頁面
 

【文章內(nèi)容簡介】 ass A { int m。 public: A() { m = 0。 } A(int m1) { m = m1。 } }。 class B { int x。 A a。 public: B(){ x = 0。 } B(int x1) { x = x1。 } B(int x1, int m1): a(m1) { x = x1。 } }。 void main() { B b1。 //調(diào)用 B::B()和 A::A() B b2(1)。 //調(diào)用 B::B(int)和 A::A() B b3(1,2)。 //調(diào)用 B::B(int,int)和 A::A(int) … } 構(gòu)造函數(shù)和析構(gòu)函數(shù) ? 拷貝 構(gòu)造函數(shù) ? 創(chuàng)建一個對象時,用另一個同類的對象對其初始化 ? 自動調(diào)用 class A { int x,y。 char *p。 public: A()。 A(const Aamp。 a)。 //拷貝構(gòu)造函數(shù) , const可有可無 } 構(gòu)造函數(shù)和析構(gòu)函數(shù) ? 三種情況將調(diào)拷貝構(gòu)造函數(shù) ? case1 A a。 A b=a。 ? case2 f(A a)。 ...... A b。 f(b)。 構(gòu)造函數(shù)和析構(gòu)函數(shù) ? case3 A f() { A a。 … return a。 } ..... f()。 ? 如果類定義中沒有給出拷貝構(gòu)造函數(shù),則編譯系統(tǒng)提供一個默認拷貝構(gòu)造函數(shù) ? 默認 拷貝構(gòu)造函數(shù)的行為 ? 逐個成員初始化 (memberwise initialization) ? 如果相應的類有對象成員,則該定義是遞歸的 構(gòu)造函數(shù)和析構(gòu)函數(shù) class A { int x。 char *p。 public: A(char *str) { x = 0。 p = new char[strlen(str)+1]。 strcpy(p, str)。 } } A a(“abcd”)。 A b=a。 0 0 abcd p p a b A::A(const Aamp。 a) { x = 。 p = new char[strlen()+1]。 strcpy(p,)。 } 深入話題 ? 動態(tài)對象 ? 在程序的堆 (Heap)中創(chuàng)建的對象稱為動態(tài)對象 ? 用 new創(chuàng)建,用 delete撤消 ? 單個動態(tài)對象的創(chuàng)建與撤消 class A { … public: A()。 A(int)。 }。 深入話題 A *p,*q。 p = new A。 ? 在 程序的堆中申請一塊大小為 sizeof(A)的 空間 ? 調(diào)用 A的默認構(gòu)造函數(shù)對該空間上的 對象初始化 ? 返回創(chuàng)建的對象的地址并賦值給 p q = new A(1)。 ? …… ? 調(diào)用 A的另一個構(gòu)造函數(shù) A::A(int) ? …… delete p。 ? 調(diào)用 p所指向的對象的析構(gòu)函數(shù) ? 釋放對象空間 delete q。 深入話題 ? 動態(tài)對象 雖然 也可以采用 C的庫函數(shù) malloc來創(chuàng)建和 free來撤消 ,但是 , malloc不調(diào)用 A的構(gòu)造函數(shù) , free不調(diào) A類的析構(gòu)函數(shù) p = (A *)malloc(sizeof(A))。 free(p)。 ? new 操作符: ? 自動分配足夠的空間 ? 自動返回指定類型的指針 ? 可以重載 深入話題 ? 動態(tài)對象數(shù)組的創(chuàng)建與撤消 A *p。 p = new A[100]。 delete []p。 ? 注意 ? 不能顯式初始化 , 相應的類必須有默認構(gòu)造函數(shù) ? delete中的 []不能省 深入話題 ? const 成員 ? const 成員變量 ? 在成員變量的聲明中加上 const, 則表示是常量 class A { const int x。 } ? 初始化放在構(gòu)造函數(shù)的成員初始化表中進行 class A { const int x。 public: A(int c): x(c) { } } 深入話題 ? const 成員函數(shù) class A { int x,y。 public: void f()。 }。 const A a。 ? () 合法 ? ? a是常量 , 在程序中不應改變 a的值 ( 改變 a的成員變量的值 ) ? 如果 A::f中沒有改變 a的成員變量的值 , 則是合法的 ,否則是不合法的 深入話題 ? 編譯程序往往無法知道函數(shù) f中是否改變了 a的成員變量的值(為什么 ? ) ? 為了安全,編譯程序認為 ()。是不合法的 ? ()合法 ? 在 A::f中不能改變 a的成員變量的值 ? 在 f的定義和聲明處顯式地指出之 class A { … void f() const。 }。 深入話題 ? const 成員函數(shù)不能修改成員變量的值 ? 成員函數(shù)加上 const 修飾符的作用 ? 對使用 ( 調(diào)用 ) const 成員函數(shù)的地方 , 告訴編譯器該成員函數(shù)不會改變對象成員變量的值 ? 對 const 成員函數(shù)定義的地方 , 告訴編譯器該成員函數(shù)不應該改變對象成員變量的值 深入話題 ? 靜態(tài)成員 ? 類刻劃了一組具有相同屬性的對象 ? 對象是類的實例 ? 類中聲明的成員變量屬于實例化后的對象 , 有多個拷貝 ? 問題:同一個類的不同對象如何共享變量 ? ? 如果把這些共享變量定義為全局變量 , 則缺乏數(shù)據(jù)保護 , 深入話題 ? 靜態(tài)成員變量 class A { int x,y。 static int shared。 ..... }。 int A::shared=0。 A a, b。 ? 類定義中聲明的靜態(tài)變量被該類的對象所共享 ? 類的靜態(tài)成員變量 只有一個拷貝 ? 靜態(tài)變量也遵循類的訪問控制 深入話題 ? 靜態(tài)成員函數(shù) class A { static int shared。 int x。 public: static void f() { …shared…} void q() { …x…shared…} }。 ? 靜態(tài)成員函數(shù)只能存取靜態(tài)成員變量和調(diào)用靜態(tài)成員函數(shù) ? 靜態(tài)成員函數(shù)也遵循類的訪問控制 深入話題 ? 靜態(tài)成員的使用 ? 通過對象使用 A a。 ()。 ? 通過類使用 A::f()。 ? C++對類也是對象的觀點的支持 ? 在一些面向?qū)ο蟪绦蛟O計語言 ( 如: Smalltalk) 中 , 把類也看成是對象 , 其屬性由元類 ( meta class) 來描述 ? 類定義中的靜態(tài)成員就是屬于類這個對象 深入話題 class A { static int obj_count。 … public: A() { obj_count++。 } ~A() { obj_count。 } static int get_num_of_obj() { return obj_count。 } … }。 int A::obj_count=0。 …… ? 類 A是 對象 ? obj_count: 程序運行的某時刻存在 的 A類對象 的數(shù)目 ? get_num_of_obj: 獲取 A類對象的數(shù)目 的 方法 示例 class A { private: A(){}。 A(const Aamp。)。 static int count。 public: static A* create()。 void print() { cout count endl。 } virtual ~A() { count。} }。 int A::count = 0。 A* A::create() { if (count 2) { count++。 return new A。 } else { cout Failed ,too many objects endl。 return NULL。 } } singleton Resource Control 原則:誰創(chuàng)建,誰歸還 解決方法:自動歸還 深入話題 ? 友元 ? 類外部不能訪問該類的 private成員 ? 通過該類的 public方法 ? 會降低對 private成員的訪問效率 , 缺乏靈活性 ? 例:矩陣類 (Matrix)、 向量類 (Vector)和全局函數(shù) (multiply),全局函數(shù)實現(xiàn)矩陣和向量相乘 深入話題 int amp。element(int i, int j) { if (i 0 || i = lin || j 0 || j = col) { cerr Matrix index out of range\n。 exit(1)。 } return *(p_data+i*col+j)。 } void dimension(int amp。l, int amp。c) { l = lin。 c = col。 } void display() { int *p=p_data。 for (int i=0。 ilin。 i++) { for (int j=0。 jcol。 j++) { cout *p 39。 39。 p++。 } cout endl。 } } }。 class Matrix { int *p_data。 int lin,col。 public: Matrix(int l, int c) { if (l = 0 || c = 0) { cerr Bad matrix size.\n。 exit(1)。 }
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1