C++学习打卡3

  • static关键字相关内容

static的作用: 控制变量的存储方式和可见性

  1. 修饰局部变量:一般情况下,局部变量会存储在栈区。并且在包含语句块结束后生命周期就结束了。加入static修饰后,存储在静态数据区,生命周期会延长到整个程序结束。但作用域不改变。
  2. 修饰全局变量:对于一个全局变量,它可以在本文件内被访问,也可以被同一个工程下的其他文件访问(添加extern声明即可)但加入static修饰后,就只能本文件访问,即作用域变了。
  3. 修饰函数:作用效果同上
  4. 修饰类:对类中的某个函数用static修饰,则表示这个函数属于一个类而不再是这个类中的对象。修饰类中的某个变量,则表示该变量在存储空间内只有一个副本,可以通过类和对象来调用。
  5. 修饰的类成员属于类,而不是对象。static成员函数不属于任何对象或实例,因此没有this指针。(即不能实例化)而虚函数的实现是要为每个对象分配一个vptr指针,vptr指针要靠this来调用。所以static成员函数不能用virtual来修饰。虚函数的调用过程:this->vptr->ctable->virtual function
  • const关键字相关内容
  1. 修饰基本数据类型:以int为例,const int和int const的效果是相同的。只要不改变变量的值就可以。
  2. 修饰指针或引用:const *表示修饰的是指针指向的变量,指向的变量为常量,* const表示指针为常量。
  3. 修饰类中成员变量:只是在某一个对象的生命周期内是常量,而对于整个类不是,实在想要建立在整个类中都恒定的常量,应该用类中的枚举常量来实现或者是static const
  4. 修饰类中成员函数:主要目的是为了防止成员函数修改对象的内容。实在想修改,使用mutable来修饰。对成员函数来说static和const不能同时使用。

修饰类对象:定义常量对象,常量对象只能调用常量函数。非常量对象既可以调用常量函数也可以调用非常量函数。(原因:对象调用成员函数时,在形参列表前加一个隐式的this,this指针默认指向调用函数的当前对象的,因此是一个常量指针。但当调用的是常量函数时,this指针前多了一个const,因此是不可以通过this指针改变指向对象的值。)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MindieWu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值