c++复习3

this指针来源:

对象不含有,对象调动成员函数,进入到成员函数体时会有this指针;

成员函数调动完毕,this指针释放;

传递this指针:1:扫描数据成元;2:扫描成员函数的声明;3:改写成员函数形参列表,类名*const  this;

4:对函数体里的数据成员加上this指针;

this指针不是push压进去的;同类型的对象调动方法区分  this指针;inline函数会把函数执行体直接拷贝,不存在现场保护和恢复,不需要调用,空间变大;

inline函数有循环,递归,不能使用inline方法,代码过长也不用内联;

构造函数时特殊的公有成员函数,也可以私有;函数名和类名相同;

构造函数也可以进行重载;对于内置类型,有空间即可进行操作,面向对象,有空间不一定有对象;给空间,调用构造函数,实例化对象;

函数结束,回收栈帧,需要调用析构函数,函数分配的资源释放,收回空间;

面向对象:空间和对象是两个;全局变量和全局对象的创建和在文件中位置没有关系,加载在.data区;

栈区和数据区的生存期由系统来控制;占位符,由空间一定有对象,占有一位字节;

malloc和new的区别:

1:new能够调用构造函数,delete释放空间之前调用析构函数;malloc只是分配空间

2:malloc申请空间失败返回NULL;new申请空间失败抛出一个异常;

3:new是一个运算符,可以重载,malloc不可以重写;

4:new创建空间不用强制转换类型;

5:new创建空间不用指定空间的大小,malloc需要;

6:new是一个关键字,malloc是一个函数;

7:new的三种调用规则:1:关键字或运算符;2:分配空间调用构造函数来创建对象;

3:定位new:new(s)object(100)调用构造函数,不会开辟空间;有空间才有对象;

class  Object{

}       调用了两次构造函数,

int main()

new(&x) Object(100)    用过定位new再次调用构造函数;

引用:1:没有空引用,必须进项初始化;

2:一旦引用称为别名,不能换;

引用返回一个变量或者对象;变量或对象的生存期不受函数生存期的影响;

派生类中定义虚函数必须与基类中的虚函数同名,同返回类型,同参数列表;

实现多态,要用指针或者引用指向执行的多态;虚函数:覆盖地址;派生类重新定义虚函数;当基类被定义为虚函数,其派生类会保持虚的特征;

内存泄漏:

1:对空间不足,由于动态存储分配函数开辟的空间,只在使用后为及时释放,结果导致一直占据该空间,堆空间耗尽,直到程序结束;

2:指针指向的地址丢失;

只有类的成员函数才有this指针;全局函数不含有this指针,引用方式返回;

普通对象可以调用普通函数和常方法,常对象只能调用常方法;

构造函数不宜返回类型作为依据;重载条件--->this 不同可以;下标运算单目运算,引用可以取值,也可以改值;

下标前面可以是数组,也可以时指针(数组退化为指针),前面也可以时对象(下标重载);

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值