人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

學習C++必須掌握的概念

學習C++必須掌握的概念

更新時間:2022-07-25 文章作者:未知 信息來源:網絡 閱讀次數:


一、指針的概念

char str[] = “ABCDEFG”;
char *pc = str; //pc是指向string str的指針
short x = 33; 
short *px = &x; //px是指向short x的指針
cout << *pc << endl; //這條語句將打印字符‘A’
pc += 4; //指針向右移動4指向第5個字符
cout << *pc << endl; //這時這條語句將打印字符‘E’
pc--; //向左移動指針
cout << *pc << endl; //這時這條語句將打印字符‘D’
cout << *px + 3 << endl; //這條語句打印36因為=33+3

在 C 程序中,假設我們已定義了以下的幾個變量及函數: int k, tem, *P1, *P2, a[5], f(), *P3(); 以下的設定敘述(Assignment statements)中, 那些有語法上的錯誤? 并請說明其原因

1.P1 = &k;
2.P2 = a;
3.P3 = f;
4.P1 = &a[3];
5.P1 = P2;

答案:
(1) P1 = &k; P1是指針變量, 因此P1表位址,而k表示一般變量,&k表示取出k的位址,故正確.
(2) P2 = a; a是數組名稱,此時可代表數組存放在內存中的起始位址,而P2為指針變量,故正確.
(3) P3 = f; f代表函數的名稱,此時代表呼叫函數f,因此含有傳回值,而P3為指針變量,故此式有錯誤.
(4) P1 = &a[3];P1表指針變量,代表位址,而&a[3]表取出索引(index)為3的數組元素的位址,故正確.
(5) P1 = P2; P1,P2皆為指針變量代表位址,此敘述是指將P2的位址指定給P1,故正確.


結構的概念
結構是一種類型,它的成員默認是public.

struct Student //定義一個結構Student用來存放學生的資料

int id; //編號
char name[30]; //名字
}
Student s = {555, “Davis, Samuel”}; //初始化Student的實例s
cout << s.id << “ “ << s.name << endl; //這條將打印“ 555 Davis,Samuel”

類的概念我想大家都應該很清楚了,我就不廢話了。

類的繼承的概念
class base
{
private:
int a;
protected:
int b;
public:
int c;
};
class sub1:public base {…};
class sub2:private base{…};

說明在base,sub1,sub2中所能取用的data members各為何.并指出這些data members的access mode(private, protected或public).
Ans:
class data members access mode
base a private
b protected
c public
sub1
b protected
c public
sub2
b private
c private


虛函數和抽象類

多態 (polymorphism)
面向對象程設計的核心觀念之一就是多態--它使一群類似的行為的同名稱的方法, 但各對象可依適合自己所需的方式建構此同名動作的實行細節, C++多態的關鍵在于所謂的虛函數這一類的函數。

虛函數(virtual function)
透過虛擬函數, 衍生類可重新定義基類的成員函數, 若想在C++程式中建立虛擬函數(然後才能實行多態), 只需利用virtual關鍵字聲明函數即可(如下所示)
virtual void Display();
虛函數的用處
針對共享相同基類的那些對象, 可有較一致的使用態度, 例如, 你可能定義一個名為Shape且帶有一 個Draw虛擬成員函數的基類, 然后從它派生了Circle類和Square類, 而且它們各自帶有自己的Draw成員函數.從這些類派生建立的每個對象都可呼叫Draw成員函數; 但是編譯程式可確保各自應呼叫那個版本的Draw 函數.是基類的還是派生類的。

一個例子

重要觀念: 指向父類的指針也可用來指向子類別

#include <iostream.h>
class BaseClass
{
public:
virtual void Display( ) { cout << 100 << "\n"; }
};
class DerivedClass: public BaseClass
{
public:
virtual void Display( ) { cout << 200 << "\n"; }
};
void Print(BaseClass* pbc)
{ pbc->Display( ); }
int main( )
{ BaseClass* pbc = new BaseClass;
DerivedClass* pdc = new DerivedClass;
Print(pbc);//顯示 100
Print(pdc);//顯示 200
return 0;
}

V-table (Virtual function table)
當C++程式呼叫非虛函數, 采用與C程式呼叫函數所用方式一樣的靜態綁定來呼叫函數. 但是C++程式 若是透過指向類別的指針來呼叫虛函數時, 編譯程式則采用所謂的晚期綁定(late binding)或靜態綁定 (static binding)技術來呼叫函數.
而C++虛函數用虛函數表(virtual function table), 或稱V-表來實作動態綁定, 所謂的V-表是一 個函數指針的陣列, 這是編譯程序替每個使用虛函數的類所建制的。

純虛函數 (pure virtual function)
一個不僅可被重新定義, 而且必須被重新定義的成員函數就稱為純虛函數, 你只要指定函數一個零值 (更有效說法是一個空指針),就可將虛成員函數轉為純虛成員函數,如以下所示
virtual void PrintData() = 0;

抽象類 (abstract class)
當一個類含有至少一個純虛函數時, 此類就稱為抽象類,而你無法以此類來衍生建立對象.


C++ template classes

一般的聲明及使用 
class Collection
{ …
int A[10]; 
}
Collection object; 
模板的聲明及使用
template <class T> //注意這里
class Collection
{ …
T A[10]; }// generic declaration
Collection<int> object; //注意這里
Collection<char> object; //注意這里 

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 林州市| 丰镇市| 乐至县| 鄂州市| 门源| 乌拉特后旗| 方山县| 龙岩市| 古浪县| 清新县| 平昌县| 宁都县| 张家口市| 天全县| 于都县| 柳江县| 乡宁县| 中方县| 沙河市| 崇义县| 桑植县| 马龙县| 灵寿县| 靖宇县| 庆云县| 色达县| 循化| 藁城市| 江源县| 彭阳县| 邮箱| 大城县| 肥乡县| 荔波县| 威信县| 宝清县| 宝坻区| 邻水| 宁津县| 侯马市| 鄱阳县|