2.1C++语言概述.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.1C语言概述

2.1.1 C++的面向对象特征 概括地讲,面向对象系统包含3个要素:对象、类和继承。能支持所有上述3个方面的语言,被称为面向对象语言。从本质上讲,C++并不是一种完美的面向对象设计语言,而是C语言的一个超集,与C兼容也是其成功的一个重要方面,因而C++也是一种混合语言,既支持传统的面向过程程序设计,又支持面向对象程序设计,灵活性大。它继承了传统C语言的优点,克服了其不足;又在面向对象特征及非面向对象特征这两个方面增加了新功能,使得它既适用于结构化程序设计,又能满足面向对象程序设计的要求,符合广大程序设计逐步更新其程序设计观念和方法的要求,因而很快流行起来。 C++的面向对象特征和风格: (1)C++借助于把一个数据结构及其操作函数组合在一起,提供了类/对象的构造和封装机制。 定义一个类的一般形式是: class calss_name { private: //私有成员部分(类外部的代码不能直接访问的部分) data and methods //可包括成员变量和成员函数 protected: //保护的成员部分 data and methods public: //公用成员部分 data and methods //公有部分定义的变量和函数 }object_name_list; 在缺省关键词的情况下,类中所有项均为私有的。C++中的struct 和 union 也和 class一样能够定义一个类,所不同的是定义成员时,在缺省关键词的情况下所有成员均为公有的。 (2)提供对象的创建和删除,特别是使用了构造函数和析构函数来管理对象。 构造函数是一个特殊的成员函数,其函数命名与类名同名,它指定了一个类的实例对象的建立和初始化过程。 析构函数是用于释放内存和删除由构造函数创建的对象。 例如: #include iostream.h //不同于C的stdio.h class myclass { int a; public: myclass(); void show(); }; myclass::myclass() { cout”in constructor\n”; a=10; //a的值由myclass()自动初始化 } //注意,构造函数是没有返回值的 . . . main() { myclass ob ; //变量说明语句也是动作语句,调用了构造函数 ob.show(); return 0; } (3)能够进行对象间的消息传递、操作调用,除了使用操作符、指针、表达式外,还有指向自身的this等。 (4)支持继承机制,特别是提供了在一种通用的功能上进行具体化定义的方法,使用基类和派生类,形成了十分方便的继承机制。 在C++中,一个派生类可以有多个基类,支持多重继承。说明一个类继承另一个类的形式为: class 派生类名:[public/private/protected] 基类名 { //冒号是类属范围算符(双目) . . . } 例如: class base { int x; public: void setx(int n){x=n;} void showx(){coutx”\n”;} }; class derived:public base { int y; public: void sety(int n){y=n;} void showy(){couty”\n”;} }; main() { derived ob; ob.setx(10); ob.sety(20); ob.showx(); ob.showy(); return 0; } (5)具有灵活的处理动态连接功能,其方法是使用虚函数(在函数名前用关键字virtual进行标识),它只能在最高层的基类中定义。 C++中函数名和运算符重载也是支持多态性的好方法。例如,下面重载构造函数提供了便利的初始化对象。 #include iostream.h class myclass { int x; public: //两种构造函数重载,使对象oba初始化,而obb没有 myclass(){x=0;} //no initializer mycla

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档