記錄,待總結

來源:互聯網
上載者:User

1.關於函數地址

class A  {public:void f(){int f = 0;}void h(){int h = 0;}virtual void g() = 0;};int main(){cout<<&A::f<<endl; // 輸出結果:1cout<<&A::h<<endl; // 輸出結果:1cout<<&A::g<<endl; // 輸出結果:1return 0;}

解釋:代碼中輸出的不是函數的地址。事實上沒有什麼通用的方法可以得到成員函數的地址。cout不知道怎麼輸出成員函數的地址,於是將成員函數的地址轉換為另一個類型(即bool型)輸出。成員地址均非零,因此輸出1。2.char (*(*x[3])())[5],x是什麼類型?參考http://topic.csdn.net/u/20120926/10/6b423fa9-e7c9-4584-b7b7-63607657e21d.html?54424*(short *)&byte[0]是什麼意思?參考http://topic.csdn.net/u/20120927/16/03b87825-0650-43c7-b3c1-ef955cfc863c.html?9294

3.結構體的賦值:

people Jack = {180.5, 179.2, "Jack", "濟南"};

Mike = Jack;

 

4.一個類的成員變數列表中包含另一個類的對象,叫做包含(包容)。

10.傳遞數組的3種方式

1)void func(int a[]);

2)void func(int a[5]);

3)void func(int *a);

void func1(int a[], int n);void func2(int a[5], int n);void func3(int *a, int n);int main(){int a[10], i;for(i = 0; i < 10; i++)a[i] = i + 1;func1(a, 10);func2(a, 10);func3(a, 10);return 0;}void func1(int a[], int n){int i;for(i = 0; i < n; i++)cout<< a[i] << ' ' ;cout<<endl;}void func2(int a[5], int n){int i;for(i = 0; i < n; i++)cout<< a[i] << ' ' ;cout<<endl;}void func3(int *a, int n){int i;for(i = 0; i < n; i++)cout<< a[i] << ' ' ;cout<<endl;}

輸出:

1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10

5.

#include<stdio.h>union myun{  struct  {  int x, y, z;  }u;  int k;}a;int main(){  a.u.x=4; a.u.y=5; a.u.z=6;  a.k=0;  printf("%d\n",a.u.x);}

分析:輸出0

x和k共用一個儲存單元,語句a.k=0;覆蓋掉了a.u.x的值。


6.delete和delete[]的區別:

delete
p 是刪除釋放一個單元,delete [] p 是釋放 多個單元,具體的資料目是查系統的分配表得到的。

對於內建類型來說,delete和delete
[]是一樣的
事實上new和delete都是兩步操作,分配(釋放)堆記憶體和調用構造(析構)函數,對於堆記憶體的釋放,確實不需要做額外的事情,delete和delete []無差別,區別就在於調用解構函式這一步,如果用delete只會調用第一個對象的析構,只有調用delete[]才會調用全部的析構

 

11.基類的虛函數不進行執行個體化,就是抽象類別。抽象類別又叫ADT,它不能用來建立具體的對象

有純虛函數的類都是抽象類別

從抽象類別派生出的新類必須為每個純虛函數賦予功能,否則仍只是一個抽象類別

不能定義一個抽象類別的對象,只能定義一個指向抽象類別的指標

指向抽象類別的指標可以動態地指向其子類的對象,從而實現程式的多態

 

12.virtual float length() = 0;

像這個在虛函數後面加個“=0”,就是純虛函數

純虛函數徹底無任何功能,也不能直接調用,只能被子類繼承並賦予新功能後才能使用

13.在一個類中定義了一個新的類型,這個類型只能在該類用使用。新類型稱為嵌套類

 

14.endl在執行時,做兩件事情:

1)輸入'\n'

2)重新整理緩衝區flush()

解釋:執行分行符號\n與執行結束符endl,最大的區別在處理檔案上,以檔案輸出資料流(ofstream)為例。

當流的緩衝區未滿時,執行'\n'是不會馬上寫到檔案裡。但是執行endl會強行把緩衝區裡的內容寫入檔案中。

 

15.輸出資料到檔案的步驟:

1)包含標頭檔stream

2)建立ofstream對象:ofstream ocout;

3)將對象與檔案關聯:ocout.open("123.txt");

4)使用該對象輸出資料:ocout<<"abc";

5)關閉與檔案的串連:ocout.close;

 

16.讀取檔案中資料的步驟:

1)包含標頭檔stream

2)建立ifstream對象:ifstream icin;

3)將對象與檔案關聯:icin.open("123.txt");

4)使用該對象輸入資料:icin>>temp;

5)關閉與檔案的串連:icin.close;

 

17.將資料輸出到檔案時,可以選擇兩種輸出方式:

1)二進位:空間小,速度快,精度高

2)檔案:便於閱讀,可直接編輯,可移植性強

 

18.同時開啟檔案的數目跟所作業系統而定,一般20個左右

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.