C++之const修饰得到是谁
在类中的函数中定义一个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修饰得到是谁相关推荐
- const 修饰指针
目录 const修饰指针 1.1const 放在*的左边 1.2const放在*的右边 const修饰指针 1.1const 放在*的左边 修饰的是指针指向的内容(*p),指针指向的内容,不能通过指针 ...
- 静态成员函数不能采用const修饰的原因
静态成员函数不能用const修饰 ,也不能存取nonstatic数据 C++中静态成员函数不能用const修饰的原因: static在c++中的第五种含义:用static修饰不访问非静态数据成员的类成 ...
- C语言--const修饰指针解析
这种例子在我们平时编程时可能会很少用,但是在面试时被问的可能性就很大了. 用const修饰指针,常见的情况可以分为四种: 1.const int *p; // p 可变,p 指向的对象不可 ...
- 关于const 修饰的一些知识
2019独角兽企业重金招聘Python工程师标准>>> #1.前言 const 修饰的是后面的东西 const修饰的东西不可变 #2.验证 1. 代码 static NSString ...
- private修饰的变量如何调用_梳理c++ const 修饰函数
const是衡量一个程序员是否老道的一个标准,除了修饰变量之外,还可以修饰函数,主要有以下几种形式 const int& fun(int& a); //修饰返回值 int& f ...
- C++成员函数中的const修饰符
在一些C++源码中经常见到const修饰的函数,这里的const与放的位置无关,也就是下面三种写法是等效的,只不过通常使用第一种写法,可以编写函数进行测试,这里的const虽然写在了函数的位置,其实是 ...
- C++ const修饰符和指针
C++ const修饰符和指针 开发工具与关键技术:C++.VisualStudio 作者:何任贤 撰写时间:2019年04月10日 const修饰符,是用来修饰变量,被const修饰符,修饰过的变量 ...
- C++阶段01笔记07【指针(基本概念、变量定义和使用、内存空间、空指针和野指针、const修饰指针、指针和数组、指针和函数)】
C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 7 指针 7.1 指针的基本概念 7.2 指针变量的定义和使用 示例 7.3 指针所占内存空间 示例 7.4 空指针和野指针 示 ...
- C++的const修饰
2019独角兽企业重金招聘Python工程师标准>>> C++的const修饰 const的两个用途 (1)可以定义 const 常量 (2)const 可以修饰函数的参数.返回 ...
- const修饰指针和引用的用法【转贴】
*************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...
最新文章
- np.random.get_state()
- 如何在 Ubuntu 20.04 上安装 Java
- 信息学奥赛一本通 1200:分解因数 | OpenJudge 2.2 1751:分解因数
- 别傻了,人家离职你也离
- 蓝桥杯官网 试题 PREV-113 历届真题 估计人数【第十届】【决赛】【研究生组】【C++】【Java】【Python】三种解法
- 安:[摩斯密码表]摩斯密码对照表
- php 公众号 发送图片,如何把图片发送到微信公众号上?
- python实现多表合并_python实现excel多表合并的方法
- R语言survival包coxph函数构建cox回归模型、ggrisk包ggrisk函数可视化Cox回归的风险评分图、使用cutoff包基于最小p值法方法计算最佳截断值(基于LIRI基因数据集)
- JS - 解决鼠标单击、双击事件冲突问题(同时实现两种事件响应)
- 关于ARM嵌入式工程师认证,AAE
- Tableau 读书笔记
- Win10打开休眠模式
- 个性化推荐系统,必须关注的五大研究热点
- 用c语言编写一个完整的实现单链表,如何用c语言实现两个单链表的归并
- 防老人走失新方法:衣服上缝二维码 走失可扫码回家
- [T-ARA][TIAMO]
- 1182: 查询记录(结构体专题)
- 在web页面预览PDF文件
- Linux防火墙设置
热门文章
- [转]CSS完美兼容IE6/IE7/FF的通用hack方法
- hdu 5720(贪心)
- UVA 10519 !! Really Strange !!
- QT入门语法——signal,slot
- Python导入模块Import和from+Import区别
- Python:每日一题001
- 【bzoj3879】SvT 后缀数组+倍增RMQ+单调栈
- 病毒汇编逆向分析实例赏析
- Linux中的SELinux与chcon以及Samba实现【转】
- Vista 系统C盘(系统盘)越来越小的问题.与解决.