慕课网C++笔记_第1页
慕课网C++笔记_第2页
慕课网C++笔记_第3页
慕课网C++笔记_第4页
慕课网C++笔记_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件: visual Studio 2010旗舰版, Visual assist X for visual Studio安装IDE(集成开发环境)如果下载到的是iso文件,那么还需下载安装上图右边的DAEMON Tools Lite(虚拟光驱软件)来运行iso。当把iso文件加载到DAEMON Tools Lite。如果不是自动运行的,那么需要打开iso文件,找到setup.exe,运行它。数据类型初始化方法:变量定义:输入输出:F5运行此程序。C+命名空间(namespace)Example:定义一个命名空间为myNum,在该命名空间中定义一个整型变量x,并给该变量赋值为105;使用C+新特

2、性判断myNum命名空间下的变量是奇数还是偶数。Example:Example:类对象的定义对象实例化Note:使用从栈实例化对象,自动释放内存。Note:使用从堆实例化对象,一定记得要释放内存。对象成员的访问方法Example:从栈、从堆String类型Example:定义一个Student类,包含名字和年龄两个数据成员,实例化一个Student对象,并打印出其成两个数据成员. 结果: 课网年龄: 2引用类型引用是变量的别名。引用不能单独存在a,b分别是x,y的别名。10放入c,20放入a,再把c(现在为10)放入b,所以结果为x=20,y=10. 实现了位置交换。运行结果:10,20指针引

3、用:运行结果:5运行结果:Example:定义一个引用y,y是x的引用,然后打印x和y的值。将y的值更改之后再次打印,x和y的值。控制变化的const 可变指针不能指向一个常量别名Example:运行结果:10运行结果:3,5使用const关键字定义整型变量count,并定义指针p引用变量count。利用for循环打印count次Hello imooc运行结果:C+函数新特性Example:运行结果:运行结果:运行结果:使用函数的重载完成返回最大值的方法。现在有一个数组,定义一个方法getMax(),利用函数的重载,分别实现:1、随意取出数组中的两个元素,传到方法getMax()中,可以返回较

4、大的一个元素。2、将整个数组传到方法getMax()中,可以返回数组中最大的一个元素。C+内存管理 申请块内存:在堆中申请100个char类型的内存,拷贝Hello imooc字符串到分配的堆中的内存中,打印字符串,最后释放内存。运行结果:Hello imooc数据的封装以上代码违背了面向对象思想,不能这些编程。面向对象基本思想:应通过调用函数来完成。通过函数来封装数据成员。Example:定义一个Student类,包含名字一个数据成员,使用get和set函数封装名字这个数据成员。在main函数中通过new实例化对象,并打印其相关函数。#include <iostream>#inc

5、lude <string>using namespace std;/* * 定义类:Student * 数据成员:m_strName * 数据成员的封装函数:setName()、getName() */class Studentpublic: / 定义数据成员封装函数setName() void setName(string _name) m_strName=_name; / 定义数据成员封装函数getName() string getName() return m_strName; /定义Student类私有数据成员m_strNameprivate: string m_strNa

6、me;int main() / 使用new关键字,实例化对象Student *str =new Student(); / 设置对象的数据成员str->setName("慕课网"); / 使用cout打印对象str的数据成员 cout<<str->getName()<<endl; / 将对象str的内存释放,并将其置空delete str;str = NULL;return 0;类内定义与内联函数Note:内联函数省去了普通函数中的步骤2,4,执行效率更高,但是,内联函数只适用于一些简单的,不复杂的函数调用。如果使用复杂的函数程序,编译时,

7、程序会拒绝内联函数调用方式。 = 类内定义:类内定义与内联函数的关系:类外定义同文件类外定义:分文件类外定义:Example:同文件类外定义Example:分文件类外定义创建头文件.h创建源文件.cppTeacher.h:类的声明Teacher.cpp:类定义demo.cpp:main函数对象结构构造函数构造函数在对象实例化时被调用构造函数代码演示:Teacher.hTeacher.cppDemo.cpp默认构造函数在实例化对象时,不需要传递参数的构造函数叫做默认构造函数。构造函数初始化列表初始化列表编码:Teacher.hnote:用到const,m_iMax必须在构造函数初始化列表中进行初

8、始化。Teacher.ccpdemo.ccp拷贝构造函数拷贝构造函数的参数是确定的,不能重载。Teacher.hTeacher.cppdemo.cpp运行结果:析构函数用于释放资源。栈中对象销毁时,自动调用析构函数;堆中对象销毁时,自动调用析构函数。Teacher.hTeacher.cppdemo.cpp运行结果:总结: 定义一个Student类,包含名字一个数据成员,定义无参构造函数、有参构造函数、拷贝构造函数、析构函数及对于名字的封装函数,在main函数中实例化Student对象,并访问相关函数,观察运行结果。对象数组Example:Coordinate.hCoordinate.cppde

9、mo.cpp运行结果:堆中析构函数是在delete p(释放块内存)时,执行的。而栈中析构函数将在按下任意键后被执行。对象成员Example:demo.cppCoordinate.hLine.hCoordinate.cppLine.cpp运行结果:Example:上述程序改造Coordinate.hCoordinate.cppLine.hLine.cppdemo.cpp运行结果:定义具有2个对象的Coordinate数组,遍历对象数组,打印对象信息:浅拷贝和深拷贝构造函数 当数据成员中含有指针时,浅拷贝会使两个对象的成员指针指向相同的内存地址。 不是所有的对象都需要深拷贝,应该根据情况合理使用

10、。 深拷贝不是简单的值拷贝,而是将指针成员指向的内存数据也进行拷贝。浅拷贝:深拷贝:Example:浅拷贝(直接赋值)Array.hArray.cppdemo.cpp运行结果:改造程序:深拷贝Array.hArray.cppdemo.cpp运行结果:对象指针Example:demo.cpp或栈实例化对象:Coordinate.hCoordinate.cpp堆实例化运行结果:注释代码:选中需要注释掉的代码,按ctrl+k+c。定义一个坐标类,在堆上实例化坐标对象,并给出坐标(3,5),然后打印坐标信息,销毁坐标对象:对象成员指针内存中的对象成员指针:Example:Coordinate.hCoo

11、rdinate.cppLine.hLine.cppdemo.cpp运行结果:this指针指向对象自身数据的指针,叫做this指针。对象各自的this指针指向各自对象的首地址,所以不同对象的this指针一定指向不同的内存地址。编译器无法分辨哪个是作为参数的len,哪个是作为数据成员的len。This指针:Array.hArray.cppdemo.cpp改造成this指针:Array.hArray.cppdemo.cpp运行结果: 10改造程序:Array.hArray.cppdemo.cpp运行结果:len=10把demo.cpp改成:运行结果:改造程序:加入引用Array.hArray.cpp

12、demo.cpp运行结果:改造程序:加入引用Array.hArray.cppdemo.cpp运行结果:把上述程序中的&改成*,*this改成this,demo.cpp改成如下:运行结果与上述程序相同。由此可见,无论是通过指针(*)还是引用(&)都可以改变实际的值。把上述程序中的&改成*,*this改成this,printInfo函数改写如下: demo.cpp改成如下:运行结果:常对象成员和常成员函数常对象成员:常成员函数:常成员函数的本质是内部使用常this指针。常成员函数内使用数据成员时,不能改变数据成员的值。在常成员函数中可以使用普通的数据成员,但是不能改变对象成员的值。常成员函数内不能调用普通的成员函数。常成员函数与普通的成员函数同名的情况下,是可以互为重载的。Coordinate.hCoordinate.cppLine.hLine.cppdemo.cpp运行结果:把上述程序的int main函数改造成:运行结果:常指针和常引用常引用与常指针:常对象

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论