c++期末复习总结类与对象
类与对象
- 类的定义:
类一般的定义格式为说明和实现两个部分(关键词class <类名>,类名首字母大写)
类是抽象的名词,不是具体的对象,系统不分配空间,定义时不能对其数据成员赋值
public ?公有的 可以在类外访问
private 私有的 只能在类的内部使用,或友元函数访问
protect 受保护的
域限定符 ::和类名一起使用,用来识别某个成员
成员访问符 . 和类的实例化对象一起使用,用来访问谋个成员
定义在类内部的函数自动作为内联函数,或者定义在函数外部的加inline关键词
Get和set函数
Get_<函数名>(),set_<函数名>
类名 对象名字 系统会分配一些空间存储
类名* 对象名字 对象指针系统不分配空间
- 构造函数
构造函数名与类名相同
构造函数名之前没有返回类型
构造函数可以被重载,可以一个或多个参数,也可有默认参数
构造函数有系统默认构造
通常构造函数具有public属性
如果没有定义系统默认生成缺省函数
缺省函数 无构造函数时系统创建的默认public无参数
注意点:
函数二义性:即定义了无参构造,又在带参数是定义了参数默认值
若定义参数时有默认参数定义,该参数后边所有参数都应该有默认值
成员对象的构造函数
若类中有成员函数,则创建该类时需要先执行成员对象的构造函数
初始表对类成员对象进行初始化?<类的名字><类的构造函数>(参数x):<对象的名字>(参数x)
拷贝构造函数:
用已存在的对象去创建另一个对象,两个对象的数据成员值完全一样
系统会自动生成调用,但是拷贝的对象中有指针成员时,要注意指针悬挂问题
声明格式<函数名>(函数名 &) ?<函数名>(const 函数名&)
被调用的时机
用以一个对象去创建另一个对象
对象作为实参传递给形参
对象作为返回值时
析构函数
析构函数名称前~
无参数
无返回值
一个类只有一个无法被重载
只能系统自动调用
可以自定义自己的析构函数
对象的生命周期结束系统调用析构函数:
函数中定义了对象,函数执行结束系统会自动调用
具有static静态属性的对象,main函数结束时调用
全局对象 main结束时调用
New动态创建的对象需要delete运算符释放对象时调用
先创建的函数后释放,函数运行在栈区
全局对象的构造函数,在main函数前被执行 ?(全局对象main函数之前创建的变量)
局部对象的创建,创建时调用,调用结束时析构
函数中定义了静态局部对象,程序执行时调一次,调用结束不释放,在main函数结束后调用析构函数
对象数组
类名 <对象那个数组名>[下表表达式]
可以使用new动态创建对象数组
类类型的参数类型
This指针
类的每一个对象都有自己的数据成员,有多少数据成员就有多少数据拷贝,类的的成员函数只有一份拷贝,无论调用那个对象都调用的这一个
This指针指向当前对象的数据成员
This不能修改const修饰的成员
常成员
Const修饰符
定义常对象
类名 Const 对象名字
对象名 const 类名
常引用作为形参时不能对实参进行修改(一般引用可以)
常数据成员
Class 类名{const 数据类型 数据};
常数据成员任何函数成员都不能对该成员进行赋值操作,常数据成员的只能在构造函数的初始化列表位置进行初始化
必须进行初始化且不能被更新
常成员函数使得数据的访问只限于可读(出现在形参列表后)不能更改数据
常成员的数据访问通常使用常成员函数来实现
常成员函数可以访问类的const和非const的数据成员,但是不能修改他们
常成员函数不可调用非const成员函数,this指针为常量型,const修饰的区别于非修饰的重名函数,是函数重载
静态常数据成员,遵循静态数据的特点,须在类外单独定义
例如static const int x
在类外const int 类名::x==20
常对象只能调用常成员函数,常成员函数是为了常对象而准备的
常数据函数的使用规则:
部分不能改变
所有的数据不能改变
定义常对象
友元函数
非成员函数,一般类中声明,类外定义
可以放在类的任意位置声明
可以通过对象名访问类的所有成员,包括私有的
可以将一个类的成员函数声明为另一个类的友元函数
Friend 返回值类型 类名::函数名();
构造函数、虚函数、析构函数不能声明为友元函数
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!