国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

學(xué)習(xí)C++必須掌握的概念

2019-11-17 05:51:50
字體:
供稿:網(wǎng)友
一、指針的概念

char str[] = “ABCDEFG”;
char *pc = str; //pc是指向string str的指針
short x = 33;  
short *px = &x; //px是指向short x的指針
cout << *pc << endl; //這條語句將打印字符‘A’
pc += 4; //指針向右移動(dòng)4指向第5個(gè)字符
cout << *pc << endl; //這時(shí)這條語句將打印字符‘E’
pc--; //向左移動(dòng)指針
cout << *pc << endl; //這時(shí)這條語句將打印字符‘D’
cout << *px + 3 << endl; //這條語句打印36因?yàn)?33+3

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

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是數(shù)組名稱,此時(shí)可代表數(shù)組存放在內(nèi)存中的起始位址,而P2為指針變量,故正確.
(3) P3 = f; f代表函數(shù)的名稱,此時(shí)代表呼叫函數(shù)f,因此含有傳回值,而P3為指針變量,故此式有錯(cuò)誤.
(4) P1 = &a[3];P1表指針變量,代表位址,而&a[3]表取出索引(index)為3的數(shù)組元素的位址,故正確.
(5) P1 = P2; P1,P2皆為指針變量代表位址,此敘述是指將P2的位址指定給P1,故正確.


結(jié)構(gòu)的概念
結(jié)構(gòu)是一種類型,它的成員默認(rèn)是public.

strUCt Student //定義一個(gè)結(jié)構(gòu)Student用來存放學(xué)生的資料

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

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

類的繼續(xù)的概念
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


虛函數(shù)和抽象類

多態(tài) (polymorphism)
面向?qū)ο蟪淘O(shè)計(jì)的核心觀念之一就是多態(tài)--它使一群類似的行為的同名稱的方法, 但各對(duì)象可依適合自己所需的方式建構(gòu)此同名動(dòng)作的實(shí)行細(xì)節(jié), C++多態(tài)的要害在于所謂的虛函數(shù)這一類的函數(shù)。

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


一個(gè)例子

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

#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)
當(dāng)C++程式呼叫非虛函數(shù), 采用與C程式呼叫函數(shù)所用方式一樣的靜態(tài)綁定來呼叫函數(shù). 但是C++程式 若是透過指向類別的指針來呼叫虛函數(shù)時(shí), 編譯程式則采用所謂的晚期綁定(late binding)或靜態(tài)綁定 (static binding)技術(shù)來呼叫函數(shù).
而C++虛函數(shù)用虛函數(shù)表(virtual function table), 或稱V-表來實(shí)作動(dòng)態(tài)綁定, 所謂的V-表是一 個(gè)函數(shù)指針的陣列, 這是編譯程序替每個(gè)使用虛函數(shù)的類所建制的。

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

抽象類 (abstract class)
當(dāng)一個(gè)類含有至少一個(gè)純虛函數(shù)時(shí), 此類就稱為抽象類,而你無法以此類來衍生建立對(duì)象.


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; //注重這里 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 拜泉县| 白河县| 东光县| 凌海市| 怀柔区| 扶绥县| 黑山县| 临武县| 宜兰县| 甘谷县| 伊川县| 南部县| 巧家县| 资中县| 共和县| 周至县| 嘉峪关市| 昌江| 大荔县| 汨罗市| 白城市| 呼伦贝尔市| 定结县| 台东市| 嵊泗县| 手游| 平阳县| 江孜县| 彭水| 双辽市| 望都县| 河南省| 蓝田县| 黔江区| 沐川县| 伊金霍洛旗| 金平| 抚远县| 岑巩县| 安西县| 霍城县|