C++基础

之前说的都是在栈上申请的内存空间,现在用new讲在堆上的空间开辟

定义一个对象的格式:类名 对象名 = new 类名();

一、new和malloc的区别

  1. new先是在堆上申请内存,后调用构造函数
  2. malloc只在堆上申请空间但是不释放

二、delete和free的区别

  1. delete先调用析构函数,后释放它
  2. free只释放

三、堆上的对象的生命周期
      被delete的时候生命周期才完结,才析构

四、static成员

  1. 静态的成员变量在类外初始化
                    
  2. 静态成员变量是这个类的,一个类只有一份,它不占对象的内存
  3. 在public权限下,静态成员变量的访问不依赖于对象,可以使用 类名::静态成
    员变量 访问
  4. 静态成员方法,访问不依赖于对象,可以依靠类名::静态成员方法名 访问

                     

   5.静态成员方法和静态成员变量使用不依赖于this指针,所静态的成员方法内不允许使用普通的成员变量和成员方法

根据4,5我们可以总结出,其实静态的成员方法和静态成员变量的使用归根

结底不依赖this指针,又因为每次调用普通成员方法时都要传this指针,所以在静

态成员方法内不允许使用普通的成员变量和普通的成员方法,但是普通的成员方法

中可以使用静态成员方法和静态成员变量

6.如果静态变量在private中的时候,通过作用域也访问不了,所以要想访问这个私有的成员变量就在public中给它提供一个接口(函数)

                         

五、初始化列表
       初始化列表就是指,在进入构造函数之前(构造对象之前)先对成员先进行初始化,所以说如果存在必须初始化的成员,则一定要将它们放在初始化列表,必须初始化的成员有以下两种情况:

  1. 被const 修饰了的,一般的我们将不允许改变的变量加上const修饰,这样的话它就不能做左值,那么它就不能被赋值,它能得到值得唯一办法就是初始化,所以我们将它放在初始化列表中                   
  2. 传的是引用,那么问题就来了,为什么引用必须初始化?初始化后为什么不能再改变它得指向?因为在出现引用得地方就会被替换成底层得指针解引用,它是没有机会去访问引用得地址得,所以也必须写在初始化列表

                           

六、const加在成员方法得右括号后面,修饰得是this指针指向得对象,不可改

                           

七、如果成员变量是对象则称为成员对象

  1. 成员对象在类对象构造之前构造
  2. 如果成员对象不存在默认得构造函数,就必须写在初始化列表里
  3. 先构造成员对象,再构造类自身得对象
  4. 先析构自身对象,再析构成员对象(因为在栈区,栈帧回退的时候先是自身对象的那块空间被释放)

八、友元类

  1. 允许友元类访问自己的私有成员
  2. 如果一个Date类嵌套在Person类的public访问权限中,在外界要是想要使用我们这个Dtae类,只要加上Person::作用域就行,但是如果在Person类的private访问权限中,就不可以访问了
  3. 友元类是单向的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值