当前位置: 首页 > news >正文

东西湖区建设局网站seo优化案例

东西湖区建设局网站,seo优化案例,在家跟狗做网站视频,重庆建设工程质量监督检测中心有限公司目录 一、const成员函数 1. const成员函数是什么? 2. 为什么有const成员函数? 3. 什么时候需要使用const修饰成员函数? 二、取地址运算符重载 1. 为什么需要重载取地址运算符? 2. 默认取地址运算符重载函数 3. 默认const取地址运…

目录

一、const成员函数

1. const成员函数是什么?

2. 为什么有const成员函数?

3. 什么时候需要使用const修饰成员函数? 

二、取地址运算符重载

1. 为什么需要重载取地址运算符?

2. 默认取地址运算符重载函数

3. 默认const取地址运算符重载函数

4. 什么时候要显示重载取地址运算符? 


一、const成员函数

1. const成员函数是什么?

const修饰的成员函数称为const成员函数,这个const是用来修饰隐藏的this指针的。

class B{
public:int func()const{}
};
将 const修饰的“成员函数”称之为 const成员函数,const修饰类成员函数,
实际修饰该成员函数隐含的 this指针,表明在该成员函数中不能对类的任何成员进行修改。

2. 为什么有const成员函数?

const成员函数的出现解决了两个问题:

  1. 如何保证无法通过成员函数修改成员变量?
  2. const对象无法调用非const成员函数。

1. const成员函数保证了无法通过成员函数修改成员变量


2. const成员函数能被const对象调用,不会产生权限放大问题。


3. 为什么const对象无法调用非const成员函数? 

        每个成员函数第一个参数都是隐藏的this指针,对象在调用成员函数时会将对象的地址传给这个this指针,但将const对象传给this指针就会造成权限放大问题。

        this 指针本身是 类名* const 类型的,比如Date类的this指针类型是 Date* const,这里的const在*后面,不同于const Date对象取地址后的类型:const Date* 【在*之前修饰,代表该指针指向对象的内容不能被修改(地址里的内容不能改);在*之后修饰,代表该指针指向的对象不能被修改(指向的地址不能改)】,而且const 对象只有读权限,而this指针*前没const修饰有读写权限,所以对象在调用成员函数将对象的地址传给这个this指针时,会造成权限放大问题。

3. 什么时候需要使用const修饰成员函数? 

        需要修改类中成员变量的成员函数(如专门用来修改成员变量的修改器),就不需要用const修饰。如果一个函数中不需要修改成员变量,建议加const进行修饰,因为const成员函数const对象可以调用,非const对象也可以调用。


请思考下面的几个问题:

  1. const对象可以调用非const成员函数吗?
    答案:不可以,传递this指针时权限会放大
  2. 非const对象可以调用const成员函数吗?
    答案:可以,传递this指针时权限缩小
  3. const成员函数内可以调用其它的非const成员函数吗?
    答案:不可以,传递this指针时权限会放大
  4. 非const成员函数内可以调用其它的const成员函数吗?
    答案:可以,传递this指针时权限缩小

二、取地址运算符重载

1. 为什么需要重载取地址运算符?

        在上篇文章C++ 类和对象篇(七) 运算符重载中,分析了重载运算符的原因:为了让自定义类型能使用运算符。重载取地址运算符的目的也是如此:让自定义类型也能使用取地址运算符(&)。

2. 默认取地址运算符重载函数

        类中有6个默认成员函数,其中就有默认取地址运算符重载函数,所以即使类中没有定义取地址运算符重载函数,对象依然能使用取地址运算符(&):

3. 默认const取地址运算符重载函数

        const取地址运算符重载函数也是默认成员函数,所以即使类中没有定义取地址运算符重载函数,const对象依然能使用取地址运算符(&):

4. 什么时候要显示重载取地址运算符? 

        一般不需要写,编译器生成的默认的取地址和const取地址运算符重载函数完全够用。特殊情况下,比如不想让别人获取对象的地址,就可以自己实现,返回nullptr:

如果不想让别人获取对象的地址,就可以重载取地址运算符,返回nullptr:
class A
{
public:A* operator&(){return nullptr;}const A* operator&()const{return nullptr;}
};
int main()
{A a;const A b;cout << &a << endl;cout << &b << endl;return 0;
}


------------------------END-------------------------

才疏学浅,谬误难免,欢迎各位批评指正。

http://www.mmbaike.com/news/59766.html

相关文章:

  • wordpress淘宝客网站百度云在线登录
  • 网站网址有哪些我想接app纯注册推广单
  • 网站建设网页设计用什么软件百度推广手机版
  • 通化公司做网站南宁整合推广公司
  • 做网站最好网络营销策划的流程
  • 咋样着做自己的网站十大经典事件营销案例
  • 路由器设置手机网站打不开宁波网站建设与维护
  • 盘锦做网站公司免费网站seo优化
  • 昆明网站建设公司_四川网络推广seo
  • 厦门seo厦门起梦太原seo快速排名怎么样
  • 珠宝手机网站模板百度引擎入口
  • 关于公司建网站站长平台工具
  • 新闻类的网站如何做优化公司做网页要多少钱
  • 兼职 做网站专业推广图片
  • 免费自建网站百度引流平台
  • 自己设计网页作业的感悟快速优化seo
  • css网站布局教程网站建设价格
  • 如何建设电影网站热搜排行榜今日排名
  • 中国建设网站企业网上银行业务功能今天最新的新闻头条
  • 2023年下半年疫情还会爆发吗搜索引擎优化名词解释
  • 在线做视频网站seo外包公司需要什么
  • 教学资源系统网站建设方案爱战网官网
  • 湛江网站建设与网页北京做网页的公司
  • seo公司上海惠州seo外包
  • asp动态网站开发 试题互联网品牌营销公司
  • 政府网站建设的有关规定哪里可以买链接网站
  • 智能建站大师官网平台可以免费发帖的网站
  • 网站运营管理方案申请域名的方法和流程
  • 如何成为网站开发工程师宁波seo如何做推广平台
  • 南宁网站建设加q479185700西安网站关键词排名