- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++笔记 2007 年 4 月 3 日
1、类型封装 类 -- 对象
描述 : (1)属性
(2)行为 ---属性和行为是属于类的创建对象。
2、构造函数 --- 初始化对象
构造函数名字必须与类名一样
构造函数不能写返回类型
构造函数在创建对象时,系统自动调用
构造函数允许重载,按用户要求,适应多种情况
当类中一个构造函数都没有的时候,系统提供默认无参的构造函数
但如果在类中定义了一个构造函数,系统就不提供默认的了,所以,建议,在写构造函数时,都要写一个无参的构造函数
3、对类的安全的定义
变量 - 私有 - private 保护变量,防止外界随意修改,只能在类的内部使用(只能被自己的成员函数使用)
函数 - 公有 - public
为保证私有变量也能为外界访问,在类内部提供set,get 方法
set 方法没有返回值,但要求有参数get 方法肯定有返回值,没有参数
4、定义类的步骤
写属性的行为
成员变量 函数
成员变量-- private
成员函数 -- public (3)特殊函数
构造函数,建议写 2 个。一个有参数的,一个无参的
get,set 函数,一个成员变量对应一对 get,set 函数,是外界访问此变量的唯一途径对于setXXX 函数,没有返回值,有参数,参数的类型与被赋值的属性类型一致。对于getXXX 函数,没有参数,有返回值,返回值的类型与输出的属性类型一致。
类的行为
5、封装
定义类的过程就是封装 练习:封装一个account 类型
属性:id , password ,name ,balance
行为:save , withdraw , query
6、把account 类拆成多文件结构
方便快速浏览整个类定义
使用方便,包含头文件即可
long Account::getId(){. }
在函数实现时,函数前把类名加上,确定函数的所有权,避免 2 个类中有同名的函数,编译出错。
:: 称为域访问控制符。
7、Person per ; 创建了一个对象,系统调用构造函数。
Person *p = NULL ; 声明一个类的指针,系统是不会调用构造函数的
Person * p = NULL;
p = new Person ; 在堆中申请一个类空间
delete p;
在堆中的数据没有名字,只能通过指针访问类对象,访问类的成员变量:
(*p).sayHello(); p-sayHello();
Person ps[5];声明一个Person 类型的数组,会调用 5 次构造函数数组在声明的时候,系统会为其分配空间
并且在声明数组的时候,没有机会指定构造函数,只会调用无参的构造函
数
当一个类定义中没有无参的构造函数,但要声明一个类的数组时,可以声明一个指针数组
Person *ps[5]; ---声明指针的时候,类对象没有创建,数组中每个元素都是 Person
类型的指针,达到:
不用构造函数
实现使用对象
for(int i = 0 ; i 5 ; i++){
ps[i] = new Person(i , 20+i); //用循环初始化每个指针
}
for(int i = 0 ; i 5 ; i++){
delete ps[i]; //释放指针指向的空间ps[i] = NULL ;
}
8、课堂练习:
要求:main()函数中不能写代码,在运行程序时,打印“Hello World”
答案:全局变量的初始化操作在main 函数执行之前就已经初始化了。因此,可以写一个
全局变量的类,其无参构造函数写输出语句。然后声明一个类的全局对象。
9、在构造函数中,当成员变量名称和形参名称相同,避免冲突的方法:
在每个对象内部都有一个名为this 的指针,指向自己,使用自己的成员变量 this-name
10、析构函数
当对象的生命周期结束,系统要回收空间,会自动被调用申请的所有资源(new char[20]),在析构函数中释放
若对象是在main 函数中的变量,在main 函数结束之后,才会调用析构函数若对象是一个函数中的局部变量,在函数返回时,调用析构函数
析构函数调用 : 对象生命周期结束,系统自动调用析构函数可以把释放资源的代码写在析构函数中
析构函数的写法:构造函数前加 “~”
不能重载,不能有参数
若不写析构函数,系统会提供默认的析构函数
当类中用到了系统空间:new 内存,打开文件就需要写析构函数,释放资源
11、作业:(1)利用面向对象的思想实现栈结构,并自己写main 函数测试。
(2)把原来的银行系统改成面向对象的形式。
文档评论(0)