析构函数和虚函数的用法和作用指针与引用的区别


置“~”是析构函数,因使用"~"符号(逻辑非运算符),表示它为腻构造函数,加上类名称来定义;
析构函数也是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载,只有在类对象的生命期结束的时候,由系统自动调用。
虚函数是C++多态的一种表现;
例如:子类继承了父类的一个函数(方法),而我们把父类的指针指向子类,则必须把父类的该函数(方法)设为virturl(虚函数)。
使用虚函数,我们可以灵活的进行动态绑定,当然是以一定的开销为代价。
如果父类的函数(方法)根本没有必要或者无法实现,完全要依赖子类去实现的话,可以把此函数(方法)设为virturl函数名=0
我们把这样的函数(方法)称为纯虚函数。
如果一个类包含了纯虚函数,称此类为抽象类
指针与引用的区别
引用:变量的别名;不分配内存空间;定义时必须同时初始化;一旦初始化后其值不能改变;
指针:是一个变量;分配内存空间;定义时可以不必初始化;
指针其实也是一种值传递,不过它传的是地址而已,引用传递是传入栈中偏移
这可以从反汇编后看出来
指针是把变量的地址入堆栈,函数开始出栈后,只能改变指针改向的地址处的内容,而不能改变指针的值
而引用传递压入的是偏移,在函数开始出栈后直接将栈+偏移来操作传入参数,所以引用使用的是同一个对象,不需要额外产生对象的拷贝,提高了效率。
  charconst*p和char*constp区别?
charconst*p指针p所指的内容不能改
char*constp指针自己的内容不能改
 
  char str='j';
  charstr2='f';
  charconst*p=&str;
  *p='q';          //不能改
   p=&str2;     //可以
  char*constm=&str;
  m = &str2;     //不能改
  *m = 'e';        //可以

 constchar*p与charconst*p是等价的,表示指针指向的内容是不变的!
而char*constp是表示指向P的指针值是不可变的!

const在*之"前"表示内容不变
const在*之"后"表示指针不变


    如:
  可以这样记:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值