类和对象
Posted shineliang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类和对象相关的知识,希望对你有一定的参考价值。
2019-04-11
类是对象的抽象,而对象是类的特例.
类是抽象的,不占用内存;而对象是具体的,占用存储空间.
类的声明:
class 类名
{
private:
私有的数据和成员函数;
public:
公有的数据和成员函数;
}
定义对象:
1.先声明类类型,再定义对象
(1)class 类名 对象名
(2)类名 对象名
2.在声明类型的同时定义对象(小型程序)
3.不出现类名,直接定义对象(不建议)
类和结构体类型的异同:
用struct声明的类,如果对其成员不作private或public声明,则将其默认为public;
而用class声明的类,如果对其成员不作private或public声明,则将其默认为private;
成员函数:
1.在类外定义成员函数
2.inline成员函数
在类外定义inine函数,需将类定义和成员函数的定义都放在同一个头文件中,否则编译时无法进行置换.
对象成员的引用:
1.通过对象名和成员运算符访问对象中的成员
对象名.成员
2.通过指向对象的指针访问对象中的成员
class Time
{
public:
int hour;
int minute;
};
Time t,*p;
p=&t;
cout<<p->hour;
3.通过对象的引用来访问对象的成员
Time t1;
Time &t2=t1;
cout<<t2.hour;
定义函数时指定类名 ::
调用函数时指定对象名 .
构造函数:是特殊的成员函数,与其它成员函数不同,不需要用户来调用它,而是在建立对象时自动执行.构造函数的名字必须和类同名以便编译系统能识别它并把它当做构造函数处理.它不具有任何类型,不返回任何值.
构造函数的主要作用是用来对对象进行初始化.
用函数初始化表对数据成员进行初始化:
例如:
Box::Box(int h,int w,int len)
{
height = h;
width = w;
length = len;
}
可以写成:
Box::Box(int h,int w,int len):height(h),width(w),length(len){}
构造函数的重载:
定义多个构造函数,以便对类对象提供不同的初始化方法,供用户选用.这些构造函数有相同的名字,而参数的个数或者参数的类型不同,这称为构造函数的重载.
在构造函数中使用默认参数是方便而有效的,应该在声明构造函数时指定默认值,而不能只在定义构造函数时指定默认值.
析构函数:
析构函数的作用并不是删除对象,而是在撤销对象占用内存之前完成一些清理工作.
析构函数不返回任何值,没有函数类型,也没有函数参数.因此析构函数不能被重载,一个类可以有多个构造函数,但是只能有一个析构函数.
调用构造函数和析构函数的顺序:
先构造的后析构,后构造的先析构.它相当于一个栈,先进后出.
以上是关于类和对象的主要内容,如果未能解决你的问题,请参考以下文章