在类中的函数中定义一个const类的函数 那么const到底修饰的是谁

#include <iostream>
using namespace std;
//C++是如何管理普通成员函数还有静态成员函数以及静态成员数据的
//C++类对象中的成员变量和成员函数是分开存储的
//普通成员变量存储在对象中 于 struct具有相同的内存布局和字节对齐方式
//静态成员变量存储于全局数据区中
//成员函数:存储于代码中
//C++中类的普通成员函数都隐士的包含了一个指向当前对象的this指针
//静态成员函数、成员变量属于类
//静态成员函数与普通成员函数的成员函数的区别
//静态成员函数不包含指向具体对象的指针
//普通成员函数包含指向具体成员函数的指针class Test{public:Test(int a,int b)      //Test(Test * this,int a,intb){this->a = a;    //当参数的名称和类变量名称相同的时候 可以使用this指针this->b =b;};void printT(){//类中可以使用this指针cout << this->a << endl;cout << this->b <<endl;}protected:private:int a;int b;};
int main()
{cout << "hello world!" << endl;system("pause");return 0;
}
1>------ 已启动生成: 项目: demotest, 配置: Debug Win32 ------
1>正在编译...
1>demo_16.cpp
1>正在链接...
1>正在嵌入清单...
1>生成日志保存在“file://e:\VS2008\demotest\demotest\Debug\BuildLog.htm”
1>demotest - 0 个错误,0 个警告
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
#include <iostream>
using namespace std;
//C++是如何管理普通成员函数还有静态成员函数以及静态成员数据的
//C++类对象中的成员变量和成员函数是分开存储的
//普通成员变量存储在对象中 于 struct具有相同的内存布局和字节对齐方式
//静态成员变量存储于全局数据区中
//成员函数:存储于代码中
//C++中类的普通成员函数都隐士的包含了一个指向当前对象的this指针
//静态成员函数、成员变量属于类
//静态成员函数与普通成员函数的成员函数的区别
//静态成员函数不包含指向具体对象的指针
//普通成员函数包含指向具体成员函数的指针class Test{public:Test(int a,int b)      //Test(Test * this,int a,intb){this->a = a;    //当参数的名称和类变量名称相同的时候 可以使用this指针this->b =b;};void printT() const{//类中可以使用this指针this->a = 200;        //demo_16.cpp(27) : error C2166: 左值指定 const 对象cout << this->a << endl;cout << this->b <<endl;}protected:private:int a;int b;};
int main()
{cout << "hello world!" << endl;system("pause");return 0;
}

在进入深入的解析发现:;

#include <iostream>
using namespace std;
//C++是如何管理普通成员函数还有静态成员函数以及静态成员数据的
//C++类对象中的成员变量和成员函数是分开存储的
//普通成员变量存储在对象中 于 struct具有相同的内存布局和字节对齐方式
//静态成员变量存储于全局数据区中
//成员函数:存储于代码中
//C++中类的普通成员函数都隐士的包含了一个指向当前对象的this指针
//静态成员函数、成员变量属于类
//静态成员函数与普通成员函数的成员函数的区别
//静态成员函数不包含指向具体对象的指针
//普通成员函数包含指向具体成员函数的指针class Test{public:Test(int a,int b)      //Test(Test * this,int a,intb){this->a = a;    //当参数的名称和类变量名称相同的时候 可以使用this指针this->b =b;};void const printT() const  {//类中可以使用this指针this->a = 200;        //demo_16.cpp(27) : error C2166: 左值指定 const 对象cout << this->a << endl;cout << this->b <<endl;}protected:private:int a;int b;};
int main()
{cout << "hello world!" << endl;system("pause");return 0;
}

其实C++编译器实现的过程是这样的,在函数后面写上 const的时候C++编译器会将其按照下面的方式进行处理

void  printT()    const //<==>  void  printT(const Test *const this)
{//类中可以使用this指针this->a = 200;      //demo_16.cpp(27) : error C2166: 左值指定 const 对象cout << this->a << endl;cout << this->b <<endl;
}

在实际的情况下多一个const因为在设C++编译器的时候C++编译器的设计者已经将this指针设计成了const类型的指针了 认为的加上的const是修饰this指针指向变量是一个const类型的变量

void  printT()    const //<==>  void  printT(const Test *const this)

C++之const修饰得到是谁相关推荐

  1. const 修饰指针

    目录 const修饰指针 1.1const 放在*的左边 1.2const放在*的右边 const修饰指针 1.1const 放在*的左边 修饰的是指针指向的内容(*p),指针指向的内容,不能通过指针 ...

  2. 静态成员函数不能采用const修饰的原因

    静态成员函数不能用const修饰 ,也不能存取nonstatic数据 C++中静态成员函数不能用const修饰的原因: static在c++中的第五种含义:用static修饰不访问非静态数据成员的类成 ...

  3. C语言--const修饰指针解析

          这种例子在我们平时编程时可能会很少用,但是在面试时被问的可能性就很大了. 用const修饰指针,常见的情况可以分为四种: 1.const int *p; // p 可变,p 指向的对象不可 ...

  4. 关于const 修饰的一些知识

    2019独角兽企业重金招聘Python工程师标准>>> #1.前言 const 修饰的是后面的东西 const修饰的东西不可变 #2.验证 1. 代码 static NSString ...

  5. private修饰的变量如何调用_梳理c++ const 修饰函数

    const是衡量一个程序员是否老道的一个标准,除了修饰变量之外,还可以修饰函数,主要有以下几种形式 const int& fun(int& a); //修饰返回值 int& f ...

  6. C++成员函数中的const修饰符

    在一些C++源码中经常见到const修饰的函数,这里的const与放的位置无关,也就是下面三种写法是等效的,只不过通常使用第一种写法,可以编写函数进行测试,这里的const虽然写在了函数的位置,其实是 ...

  7. C++ const修饰符和指针

    C++ const修饰符和指针 开发工具与关键技术:C++.VisualStudio 作者:何任贤 撰写时间:2019年04月10日 const修饰符,是用来修饰变量,被const修饰符,修饰过的变量 ...

  8. C++阶段01笔记07【指针(基本概念、变量定义和使用、内存空间、空指针和野指针、const修饰指针、指针和数组、指针和函数)】

    C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 7 指针 7.1 指针的基本概念 7.2 指针变量的定义和使用 示例 7.3 指针所占内存空间 示例 7.4 空指针和野指针 示 ...

  9. C++的const修饰

    2019独角兽企业重金招聘Python工程师标准>>> C++的const修饰 ‍const的两个用途‍ (1)可以定义 const 常量 (2)const 可以修饰函数的参数.返回 ...

  10. const修饰指针和引用的用法【转贴】

    *************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...

最新文章

  1. np.random.get_state()
  2. 如何在 Ubuntu 20.04 上安装 Java
  3. 信息学奥赛一本通 1200:分解因数 | OpenJudge 2.2 1751:分解因数
  4. 别傻了,人家离职你也离
  5. 蓝桥杯官网 试题 PREV-113 历届真题 估计人数【第十届】【决赛】【研究生组】【C++】【Java】【Python】三种解法
  6. 安:[摩斯密码表]摩斯密码对照表
  7. php 公众号 发送图片,如何把图片发送到微信公众号上?
  8. python实现多表合并_python实现excel多表合并的方法
  9. R语言survival包coxph函数构建cox回归模型、ggrisk包ggrisk函数可视化Cox回归的风险评分图、使用cutoff包基于最小p值法方法计算最佳截断值(基于LIRI基因数据集)
  10. JS - 解决鼠标单击、双击事件冲突问题(同时实现两种事件响应)
  11. 关于ARM嵌入式工程师认证,AAE
  12. Tableau 读书笔记
  13. Win10打开休眠模式
  14. 个性化推荐系统,必须关注的五大研究热点
  15. 用c语言编写一个完整的实现单链表,如何用c语言实现两个单链表的归并
  16. 防老人走失新方法:衣服上缝二维码 走失可扫码回家
  17. [T-ARA][TIAMO]
  18. 1182: 查询记录(结构体专题)
  19. 在web页面预览PDF文件
  20. Linux防火墙设置

热门文章

  1. [转]CSS完美兼容IE6/IE7/FF的通用hack方法
  2. hdu 5720(贪心)
  3. UVA 10519 !! Really Strange !!
  4. QT入门语法——signal,slot
  5. Python导入模块Import和from+Import区别
  6. Python:每日一题001
  7. 【bzoj3879】SvT 后缀数组+倍增RMQ+单调栈
  8. 病毒汇编逆向分析实例赏析
  9. Linux中的SELinux与chcon以及Samba实现【转】
  10. Vista 系统C盘(系统盘)越来越小的问题.与解决.