- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE \* MERGEFORMAT20
类
1.类的定义:
Class 类名
{
数据成员;
Public:
成员函数声明;
};
成员函数定义(一定要加作用域“void 类名::函数参数”)
例如:class Tdate{ //类的定义
Int year,mouth,day;
Public:
Void set(int y, int m, int d);
Bool isLeapYear();
Void print();
}; //类结束一定要加分号
Void Date::set(int y, int m, int d){ //成员函数的实现
Yeat=y; mouth=m; day=d;}
Int main(){
Date d; //定义对象
d.set ( 2000,12,6) //成员函数的调用(点的方式调用,因为成员函数从属于类)
}
@类函数必须先在类体中作原型声明,然后在类外定义,也就是说类体的位置应在函数定义之前,否则编译时会出错。虽然函数在类的外部定义,但在调用成员函数时会根据在类中声明的函数原型找到函数的定义(函数代码),从而执行该函数。
@注意:在类体中不允许对所定义的数据成员进行初始化。
2,对象(是类的变量)
Data d; // 定义对象时后面什么都不带时 就调用默认构造函数
d.pritn(); //类对象调用方式
d为对象,拥有操作的数据实体
3.对象指针
例如:
date *p;
p-print(); //对象指针间接调用方式
(*p).print(); //一定要加括号否则会出错
@对象数组
定义:类名 对象数组名[20];
Date points[20];
对象数组的每一个元素都是一个对象,有多少个对象就调用多少个析构函数
4、构造函数
构造函数的作用:定义函数时初始化对象
注意:默认构造函数和函数重载不能同时使用
析构函数特点:无返回值,无形参,函数名为类名
调用:自动调用
必需使用构造函数的情况:
当对象有多种初始化时,就需要重载
当类的成员是指针同时涉及分配空间(此情况一定要写析构函数)
当类中有子对象,常数据成员
当该类是派生类
三种构造函数:
1、默认构造函数
形式:
类名() //data()
没有返回值,函数名是类名,没有形参
*系统自带默认构造函数,当定义了一个默认构造函数之后,系统定义的构造函数将被覆盖。如果手工定义了无参构造函数,或者其他的任何构造函数,则系统不再提供默认的无参构造函数。 P302
2、带形参的构造函数
形式:
类名(形参) //data(int n)
没有返回值类型,函数名是类名,有形参,可重载
运用:
Eg:
student(string n=”no name”,int ssID=0):id(ssID), name(n) { }
// id(ssID)对其他类进行初始化
P306
Eg:
Class A
{};
Class B
{};
Class C{
A a;
B b;
Public
C(int x,int y):b(X),a(y) { }
};
Int main()
{
C c (15,9);
}
A 先定义,B先构造。调用时定义顺序说了算,构造对象说了不算
3、带拷贝构造函数
形式:
类名(类名 对象) //person (person $s) 调用:person p1(“jone”);
@浅拷贝:就比如像引用类型,是指源对象与拷贝对象共用一份实
体,仅仅是引用的变量不同(即名称不同),对其中任何一个对像
的改变,都会影响另一个对象。
@深拷贝:就比如值类型,源对象与拷贝对象相互独立,其中任何
一个对象的改变都不会对另一个对象造成影响。所以,深拷贝还需要做动态内存分配。
9、析构函数
形式:
~类名(); //~A() //函数名:“~A”
功能:释放对象空间
顺序:
先定义的后析构
有一个析构函数
必需写析构函数的情况:
当类的成员是指针变量时,需要动态申请空间时
注意:
析构函数和拷贝构造函数成对出现。
析构函数的形式是唯一的,没有重载的析构函数,一个类中只有一个析构函数
Eg: class A{
Public:
A(){ cout”A-”;}
~A(){ cout”-~A”;}
}
4.常成员函数(const)
运用:只对对象进行读操作
形式:
void data::print()const; //定义成员
文档评论(0)