王朝网络
分享
 
 
 

学习C++必须掌握的概念

王朝c/c++·作者佚名  2008-06-01
宽屏版  字体: |||超大  

一、指针的概念

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有