C++类和对象总结
我们首先来了解一下什么是类,什么是对象
类是抽象的,对象是具体的,所以类不占用内存,而对象占用内存;
类是对象的抽象,而对象是类的具体事例
比如说类我们可以当成水果,那么对象就是苹果、蓝莓等。
C++的三大特征:
封装、继承、多态
类的访问限定符:
public(公有的):任意位置都可以访问
protectd(私有的):子类本类类中允许访问
private(受保护的):本类类中访问
类中默认的访问限定符是私有的,而C语言中struct默认的访问限定符是公有的,类中实现成员方法默认是inline
我们可以定义一个学生类,其中包含成员char*类型的mname(姓名)、bool类型的msex(性别)和int类型的mage(年龄)
类中实现成员方法默认是内联(inline)
所有成员访问前面都有个this指针,存放调用的地址,this指针是隐式的
this指针一定要接受对象的地址且this指针的指向不能改变
普通成员方法是thistledowncall的调用约定,普通成员方法依赖对象调用
下来我们来了解一下C++类中的六个默认函数:
构造函数
析构函数
拷贝构造函数
赋值运算符的重载函数
取地址操作符的重载函数
const修饰的取地址操作符的重载函数
需要了解前四个:
1.构造函数
构造函数用于初始化对象空间,可以重载,无返回值,不能手动调用,对象构造时系统自动调用对应的构造函数 。下面我们举个例子:
我们在public中定义了一个构造函数Student(char *name,bool sex,int age)
当然我们也可以定义无参构造函数
2.析构函数:
表示方法析构函数表示方法为在类名上加一个~,如我们第一附图定义了一个名为Student的类,其析构函数为~Student()
析构函数可以重载
析构函数是可以手动调用的,会退化成普通的成员方法
切记先构造后析构
下来我们先来看一下对象是如何生成和销毁的:
对象的生成:
1.对象开辟空间
2.对象内存做初始化,调用构造函数
如:Student st1("zhangsan",false,18);
对象的销毁:
1.释放对象所占的其它资源,调用析构函数
2.释放对象所占的内存空间
3.拷贝构造函数
拷贝构造函数就是拿一个已存在的对象来生成一个相同类型的新对象
Student(const Student&)
需要注意的是默认的拷贝构造函数是一个前拷贝
拷贝构造函数形参必须是类对象的引用
4.赋值运算符的重载函数
把已存在的对象赋值给相同类型的对象
1.判断自赋值,通过哟this指针的指向
2.释放旧资源
3.开辟新资源
4.赋值
形参const
1.防止实参被修改
2.接收隐式生成的临时量
临时对象:
隐式生成临时对象 编译器推演需要的对象类型
显式生成临时对象 程序指明要生成的对象类型
优化:
如果临时对象生成的目的是为了生成新对象
以生成临时对象的方式来生成新对象
生存周期 表达式结束
引用会提升临时对象的生存周期使得临时对象变得和引用对象一样的生存周期
临时两
内置类型 ==》 常量
自定义类型 ==》变量 内存
隐式生成 == 》常量