


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+的学习心得注意:因为我们在实验室大多是以项目为基础来学习 C+ ,这样可能导致我们不能形成一个知识体系,所以建议大一同学脚踏实地的从头学习 C+ ,即使时间不充裕的大二、大三同学在学习时也要做好笔记,以便下次遇到同样的错误能很快解决。介于大多数人都要学C 语言,所以本文就以C+ 与 C 语言的对比开始。要区分C 语言和C+ 的不同, 首先要想明白, 用砖头建造城市、用房屋建造城市与用两者共同建造城市的不同。1. 想要学 C+必须掌握 C 语言的基础运用,这要从 C+的产生说起。 C+其实并不是一个新的计算机语言,它只是在C 语言的基础上预先编写好了很多函数。所以如果把C 语言比为砖块,那么
2、C+就是有砖块组成的一些小的建筑。所以学习C+必需先掌握C语言的基础运用。2. C 语言和 C+哪个难?其实这个问题提的很不理想。试问:建起一个城市,是用砖头从头建起来简单,还是把一些已经建好,并且使我们需要的房子摆放好简单?很明显C+本身的作用是为了方便使用C语言编程 。3. C 语言和 C+在语法上有什么不同?就我最近对 C+学习时遇到的一些问题来看, C+在语法上基本与 C 语言一致。但是由于房屋是别人建的,要使用它就要明白它们的建造过程 (当然有些我们只要直接使用就行了, 尤其是在前期)。而 C+中封装的函数, 也是 C+的开发者已经建好的, 所以我们要很好地使用它们就要明白它们的建造
3、方式,至少要知道它们的使用语法。4. C+语言与 C语言的不同之处(准确的说应该是来看看 C+开发者已经为我们做好了什么)注意:以下只是我在编写六维鼠标时遇到的,不全面,其余区别大家可以在以后的学习中自己摸索。1)c 语言后缀 .c , c+后缀 .cpp 。2)当函数定义放在函数调用之后时,C 程序的函数原型即声明有时可省略,而C+的函数声明不能省略,而且还要求函数的所有参数在函数原型的圆括号中声明。一个不带参数的C 函数原型必须使用 void 关键字,而C+函数原型可以使用空参数表。3)C+中用 new 和 delete运算符取代C的内存分配和释放函数malloc()和 free()。4)
4、const 常量类型:用来表示一个“常值变量”与#define的区别:1.#define size 20)中,类的实现放在源文件( *.cpp )中,二 main 主函数可以放在另一个源文件中。在源文件中用#include编译预处理指令包含头文件。2. 对象:对象是类的一个实例,定义并实现了类,就可以利用类来声明对象,其形式与普通变量的声明类似。例如:以下用类Time 声明了对象t1 ,today 和对象的指针pt1 :Time t1,today; 或指向运算符“ -> ”引用对象的公有成员,但注意不能引用对象的非公有成员。如 :pt1->setTime() 或 ()3. 构造函数
5、和析构函数:在声明对象时,对象一般需要进行初始化,及对成员变量进行初始化。在定义类时不能对成员变量进行初始化,因为不能确定类中定义的成员变量是属于哪一个对象。构造函数:是一种特殊的成员函数,特殊性在于:它不需要用户程序调用,就能在创建对象时由系统自动调用。其作用就是在对象被创建时利用初始值去构建对象,使得在声明对象时就能自动地完成对象的初始化。析构函数:是在对象的生存期即将结束时由系统自动调用的。析构函数的作用与构造函数相反,用来在对象被删除前做一些清理工作和数据保存工作。构造函数的名称与类名相同,析构函数的名称是在类明前加符号“”构成(表达取反的意思)。注意,构造函数和析构函数不能有任何返回
6、类型,包括void类型;析构函数不能有参数。下例说明了构造函数和析构函数的定义方法及执行顺序4.静态数据成员在储存类型上类似于一般的static静态变量,也具有全局性。静态数据成员的属性也可以是公有、私有或保护的。对于公有静态数据成员,除了可以像一般数据库成员那样,直接通过对象或在成员函数中访问它们,还可以利用类名加作用域限定符(:)来访问他们。对于私有和保护属性的静态数据库成员,只能在成员函数中访问它们。由于静态数据成员不具体属于哪一个对象,因此不能构造函数或其他成员函数中对他们进行初始化,他们的初始化必须在类体外进行。注意:静态成员函数只能访问类的静态成员(成员变量和成员函数),而不能访问
7、非静态函数。解决这个问题的方法是将对象作为静态成员函数的参数,然后在静态成员函数中通过对象访问非静态成员。5. this 指针:在成员函数中访问数据成员或调用其他成员函数不需要指定对象,因为他们都是通过一个隐藏的 this 指针确定当前的对象。例如: void Time : showTime()cout<<hour : <<minute<< : <<second<<endl;而实际上编译器会把 this 指针作为成员函数的参数,即上述函数定义等同于:void Time : showTime(Time* this) cout<&l
8、t;this->hour : << this->minute<<: << this->second<<endl;在一个成员函数中经常需要调用其他函数(非本类的成员函数) ,而有时需要把当前对象(即对象的地址)作为参数传递给被调用函数,这是必须使用this指针。区别于非静态成员函数,静态成员函数没有 this 指针,因为静态成员函数属于整个类,它只有一个运动实例,不需要通过对象,通过类就可以调用它。6. 友元定义:友元的另一种类型是友元类,一个类可以声明另一个类为其友元类,友元类的所有成员函数都可以访问声明其为友元类的所有成员。构
9、成:一个函数要成为一个类的有元函数,需要在类的定义中声明该函数,并在函数声明的前面加上关键字 friend 。作用:友元提供了不同类或不同类的成员函数之间以及成员函数和一般函数之间的数据共享机制。注意:友元关系是单方向的,不具有交换性和传递性。7.常对象和常对象成员:对于急需要共享又需要安全的数据,可以利用const 来进行保护。常对象:常对象的数据成员的值在对象的整个生存期内不能被改变,必须利用构造函数进行初始化,且以后不能再被更新。声明格式有以下两种:const< 类名 ><对象名 >( 初始值类表 )<类名 > const < 对象名 >(
10、 初始值类表 )例如: const Time meeting(8,30,00);8.常成员函数:可以使用 const 关键字限制成员函数对数据成员进行修改操作,这种使用const 关键字进行声明的成员函数称为常成员函数。格式如下:<函数类型 > < 函数名 > (< 参数表 >) const;例如,下面声明的成员函数MemberFun()就不能修改对象的数据成员。void MemberFun() const;在常成员函数中只能调用常成员函数,而调用其他普通函数可能会造成简介修改数据成员。常数据成员: 可以使用 const 关键字将数据成员声明为常数据成员。
11、常数据成员的初始值只能通过构造函数获取,并且只能在构造函数的初始化列表中设置其初始值。静态常数据成员初始化只能在类体外进行。11 继承与派生: C+ 中,可以在已有类的基础上定义一个新类,新类称为原有类的派生类或子类,而原有类称为新定义类的基类或父类。语法如下:class< 派生类名>:<派生方式> <基类名 >/ 派生类新增加的成员声明列表;例如:class Car : public Vehicle/ 在派生类Car中新增加的成员;基类中原有成员的访问权限在派生类中可以被修改,它们的访问权限由派生类定义中的<派生方式 >决定。但注意,为了不破坏基类的封装性,无论采用哪种派生方式,基类的私有成员在派生类中都是不可见的,即不允许在派生类的成员函数中访问基类的私有成员。public:punlic(公有派生)是类继承中最常见派生方式。这样就可以在派生类的成员函数中访问基类中原有的非私有成员,并
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2022冬奥知识课件
- 2023年销售部工作总结与明年计划汇报
- 创意设计概述
- 中班冬季班本课程
- 儿童拇指骨折护理常规
- 诚信教育主题
- 人教版数学六年级下册一课一练-3.1圆柱人教新版含答案
- 人教版数学六年级下册4.3比例的应用练习卷含答案
- 茂名市信宜市2025年数学三下期末达标检测试题含解析
- 四川邻水实验学校2025届高三下学期四月调研测试英语试题含解析
- 2025-2030中国便利店行业发展前景及发展策略与投资风险研究报告
- 2025上海劳动合同样本专业版(合同版本)
- 2025年山东省枣庄市台儿庄区中考一调语文试题(原卷版+解析版)
- 2025年江苏省苏锡常镇高考数学调研试卷(一)(含答案)
- (二模)乌鲁木齐地区2025年高三年级第二次质量检测语文试卷(含官方答案)
- 2018工程定额单价表
- 城区建筑垃圾处理资源再利用设备采购 投标方案(技术方案)
- 第11课《山地回忆》教学课件2024-2025学年统编版语文七年级下册
- 建筑工程材料采购管理职责
- 【道法】历久弥新的思想理念课件 2024-2025学年统编版道德与法治七年级下册
- 【培训课件】DOE培训
评论
0/150
提交评论