C++中类和对象调用及生成

1.C++有三大特征:封装,继承,多态

封装:就是把普通的对象进行封装,对象的属性设为私有的,对外提供get和set方法,其他类只能通过get和set对对象属性值进行操作。

其中封装的三个访问限定符:1.public:任意位置访问;

                                               2.protected: 本类,子类中访问;

                                               3.private:  本类中访问;

继承:是发生在两个类之间,一个类继承另一个类是说这个类属于另一个类,具有另一个类的所有属性和方法,同时它还可以有另一个类不具备的方法和属性。

多态:是建立在继承的基础上的,一个父类对象可以产生多个不同的子类对象,根据这些子类对象的不同可以具备不同的方法,也就是说表现出了不同的形态即多态。

2.C++中struct也可以当类来使用(struct class)

结构体中的默认访问限定符:公有都可以访问,私有限定访问。

3.成员方法的实现

       <1>类中:内联函数

       <2>类外:普通函数

4.类中的6个默认函数

<1>构造函数:用来初始化对象的成员变量。 
特点: 
1. 函数名与类名相同 
2. 没有返回值 
3. 新对象被创建时,由编译器自动调用,且在对象的生命周期内仅调用 
一次 
4. 构造函数可以重载,实参决定了调用哪个构造函数 
5. 无参构造函数和全缺省的构造函数都认为是缺省的构造函数,并且缺省的构造函数只能有一个 
6. 有初始化列表(可以不用) 
7. 如果没有显式定义时,在必要情况下,编译器会合成一个默认的构造函数  
8. 对于单个参数构造函数,可以将其接受参数转化成类类型对象。用explicit修饰构造函数,抑制由构造函数定义的隐式转换,explicit关键字类内部的构建声明上,在类的定义体外部的定义上不再重复。

<2>析构函数:与构造函数的功能相反,用于销毁对象,由编译器自动调用。 
特点: 
1. 析构函数在类名(即构造函数名)加上字符~ 
2. 析构函数无参数无返回值 
3. 一个类有且只有一个析构函数。若未显示定义,系统会自动生成缺省的析构函数 
4. 对象生命周期结束时,C++编译系统系统自动调用析构函数 
5. 注意析构函数体内并不是删除对象,而是做一些清理工作

<3>拷贝构造函数:

函数名也为类名,只有单个形参,而且该形参是对本类类型对象的引用(常用const修饰),这样的构造函数称为拷贝构造函数。拷贝构造函数是特殊的构造函数,创建对象时使用已存在的同类对象来进行初始化,由编译器自动调用

特性: 
1. 对于构造函数的重载、构造函数的性质,拷贝构造函数均满足 
2. 参数必须使用类类型对象引用传递 
3. 如果没有显式定义,必要情况下,系统会自动合成一个默认的拷贝构造函数。默认的拷贝构造函数会依次拷贝类的数据成员完成初始化。若无必要,则编译器会通过复制的方式来完成对对象的拷贝功能。
<4>赋值操作符重载:赋值操作符重载是操作符重载的一种

<5>取地址操作符重载: 赋值操作符重载是操作符重载的一种

<6>const修饰的取地址操作符重载:

     当&重载为被const修饰的成员函数时,系统会默认地对返回值加上const修饰。 
若对调用此重载时,若不显式调用自己定义的取地址重载,则系统会调用它自己默认的函数

对象的生成

1.开辟内存

2.内存空间进行初始化,调用构造函数(赋资源)

3.构造析构函数:

析构函数是不可以重载的;

4.拷贝构造函数:用已存在的对象生成一个相同类型的新对象

默认的拷贝构造函数是一个浅拷贝(拷贝的函数与原函数指向同一内存,释放后,原函数的指针就变为了野指针)

5.赋值运算赋重载函数:把一个已存在的对象赋给相同类型的已存在对象

     实现过程:判断自赋值;释放旧资源;开辟新资源;赋值;

 

在调用类的过成中会产生临时量

临时量:1.内置类型生成的临时量为常量(在寄存器中)

               2.自定义类型生成的临时量为变量(在内存中)

               3.隐式生成的临时量为常量

               4.显示生成的临时量为变量

生成的临时对象:

生存周期:表达式结束

临时对象的优化:

  生成临时对象的目的:生成新对象(以生成临时对象的方式生成新对象)

   引用能提升临时对象的生存周期

   把临时对象提升和引用变量相同的生存周期

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值