当前位置:首页 > 日记 > 正文

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

学习C++必须掌握的概念
一、指针的概念

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 
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 Collection
{ …
T A[10]; }// generic declaration
Collection object; //注意这里
Collection object; //注意这里 

相关文章

创建水泡效果与三维MAX

创建水泡效果与三维MAX

水泡,效果,电脑软件,MAX,用一般的方法来制造水泡的特效是很困难的,现在我将给你一个简单的方法来创造一个真实的气泡效果,这样你就不需要创建很多球体(球体)来模拟水中的气泡。你只能使用粒子系统(喷雾)并给它材料: 1。创建气泡图 1)首先,在编辑窗口…

看看2.0.9新版人人网微博客

看看2.0.9新版人人网微博客

博客,新版,电脑软件,看图选图要方便快捷,最好还可以多种方式在线分享,不少用户对看图软件都有这样的需求。日前,最快的万能看图软件美图看看发布了最新的2.0.9版,继微博后又可批量上传人人网,为用户提供了更加方便快捷的在线分享通道。 …

梅土秀秀2.4.3框架的新版本可以调

梅土秀秀2.4.3框架的新版本可以调

调整,框架,新版本,透明度,秀秀,美图秀秀2.4.3新版 边框可以调节透明度啦!为了满足用户在图片处理时的操作需求,美图秀秀团队在经过一段时间的重构和优化后,发布了美图秀秀2.4.3新版。重点对&ldquo;撕边边框&;、&ldquo;纹理边框&;和&ldquo;炫彩…

美国空军已开始升级Windows7,和士兵

美国空军已开始升级Windows7,和士兵

升级,士兵们,美国空军,看法,电脑软件,美空军开始升级Windows7,士兵们众说纷纭据科技网站NetworkWorld报道,美国空军已经开始部署Windows 7系统,部署计划将于2011年12月全部完成。美国空军多数部门都使用Vista系统,因此升级Windows 7不会带来太…

点评:手机实名制的三条规则

点评:手机实名制的三条规则

实名制,三条,规则,点评,电脑软件,9月1日,千呼万唤始出来的手机实名制尘埃落定。从这一天开始,用户购买手机卡必须提供真实的身份证明。根据工信部的相关文件,手机实名制将分两个阶段进行:从9月1日起对新增电话用户进行实名登记;待相关法规出台后…

努力实现无缝连接,谷歌提供新的社会

努力实现无缝连接,谷歌提供新的社会

协作,无缝连接,努力实现,功能,社会,谷歌周三宣布,将在Docs在线文档服务中拓展社交协作功能。谷歌表示,Docs的评论现在可以做到无缝衔接,并且可以通过新的电子邮件功能非常方便地管理。在此之前,用户必须要亲自打开文档才能查看新评论。谷歌也承…

飞信2010beta4.0使用评价

飞信2010beta4.0使用评价

评价,飞信,电脑软件, 飞信又出新版本,官网正式发布了飞信2010 Beta4.0(PC客户端版本号4.1.0740),作为中国移动推出的&ldquo;综合通信服务&;,飞信融合语音(IVR)、GPRS、短信等多种通信方式,覆盖三种不同形态(完全实时、准实时和非实时)的客…

QQ2011正式版的最终发布!添加13个令

QQ2011正式版的最终发布!添加13个令

正式版,敬畏,功能,电脑软件,QQ2011 正式版今日终于正式发布了!此次QQ2011 正式版为全员版,不再需要申请官方试用资格,再次新增13项功能!例如支持三人视频聊天、支持语音和手写输入文字,将聊天软件的功能又做了一次提升;同时优化了操作体验,修改在…

黑客开发了一种新的Kinect来控制Wi

黑客开发了一种新的Kinect来控制Wi

控制,浏览器,黑客,开发了,电脑软件,MIT研发出了一个新的Kinect Hack,它允许用户用双手控制Windows7系统和浏览器,包括浏览网页甚至桌面上的应用程序。微软的Xbox 360 Kinect发布后,黑客社区一直致力于创建开源驱动程序和应用,目前已经催生了不…

如何在寒冷的冬季频繁调整业务

如何在寒冷的冬季频繁调整业务

业务,调整,频繁,寒冷,冬季,见习记者 纪佳鹏 北京报道自第三季度报表发布显示业绩不佳,用友软件(600588.Sh)股价连续下挫。12月20日,用友软件2012年第二次临时股东大会用友公司回购股份计划获通过。根据回购计划,用友软件拟动用自有资金通过集…

WindowsServer2012开启云操作系统

WindowsServer2012开启云操作系统

云操作系统,新时代,电脑软件,讯 微软公司服务器与开发工具事业部总裁Satya Nadella在全球网上发布会上正式宣布微软新一代云计算IT平台Windows Server 2012 即将全面上市。Nadella 在主题演讲中阐述了 Windows Server 2012是一套广受赞誉的…

DST以1亿8700万美元购买了一个即时

DST以1亿8700万美元购买了一个即时

即时通讯,工具,腾讯,买了,失去了, 美国在线宣布,将以1.875亿美元的现金价格,把有&ldquo;即时通讯工具鼻组&;之称的ICQ出售给俄罗斯互联网投资公司 DST。此前盛传的&ldquo;买家&;大热门&mdash;&mdash;腾讯失手。值得注意的是,此番收购价…