C++基础之访问const变量、访问私有变量and联合体(狗仔队)
来源:互联网 发布:直播那个软件最好 编辑:程序博客网 时间:2024/06/05 16:18
一、访问const变量
const int a = 5;用const限定,a的值就是5了,不能修改为其他的了,但这也不是绝对的
int *p = &a;*p = 3;通过指针获取到a的地址可以再内存中修改a的值
修改前内存中a: 修改后内存中a:
图中看出内存确实被修改了,若是你打印出来,还是没改之前的值,猜测编译器看到const将变量看做是常量,用的是常量的这个数,在没去内存里看了
二、访问私有成员变量
class A{ int a;//默认是私有,问题怎么访问到a给a赋值};
- 方法一
A *p = new A;int *b = (int *)p;//新建对象的地址放到b里*p = 3;//取b的内容就是a赋值换种写法:int *p = (int *)new A;*p = 3;
- 方法二
Class B{public:int b;};A *pa = new A;B *Pb = (B*)pa;//A类的指针类型转为B类pb->b = 3;
这里我明白了即使将指针类型强转,但这个指针指向的地方仍然是建这个指针的地方,不过指针拥有了强转类型的特性
- 方法三
class A{private:int a;};union B{public:int b;//共同体所占内存空间大小:4个字节A c;};int _tmain(int argc, _TCHAR* argv[]){B *p = new B;p->b = 3;第三种方法比较新颖,用的是联合体,也叫共同体,我也是今天才接触到这个,也是通过这种方法推出第二种方法的
共同体:关键字----union
所占内存大小:成员变量中占内存最大的变量所占内存(共同用一块内存,能存下最大的变量就可以了)
特性:给一个成员变量赋值,会给对应内存的成员变量都赋值(因为大家存在于同一块内存中)
特性举例:共同体成员double、int、char各一,内存,八字节
特性举例2:共同体有int a,int b,内存4,a = 3,同样也赋值为3;(通过这个特性,上面代码中给b赋值也是给a赋了值)
因为可以强转,C++所以是不安全的语言
0 0
- C++基础之访问const变量、访问私有变量and联合体(狗仔队)
- c#:反射访问私有变量
- 访问私有变量,私有方法
- <C++>私有变量的访问权限
- 私有变量以及如何访问私有变量
- 黑马学习-------------反射(访问私有变量)
- 访问私有变量的疑问
- 访问类私有成员变量
- 访问私有变量或方法
- OC私有实例变量访问
- Python 访问私有变量和私有方法
- TMemoryStream 私有变量FSize 访问父类私有变量
- 访问私有变量疑问的解决
- 如何访问私有成员变量和函数
- 线程里面访问私有成员变量 ,ok
- 拷贝构造函数 访问私有变量成员
- java反射访问私有成员变量
- 类外部访问私有成员变量
- ACM steps 1.1.4
- 从 C++ 单例 pthread_once 到 double-check、volatile、memory barrier
- 0 - 如何从Silverlight和WPF的XAML迁移至Windows Store Apps
- 冒泡排序理解
- redis数据结构使用场景
- C++基础之访问const变量、访问私有变量and联合体(狗仔队)
- Index
- WebService到底是什么?
- 给你一个自然数N,求[6,N]之内的所有素数中,两两之和为偶数的那些偶数
- 计算机网络学习--IP头校验和
- ZOJ Problem Set - 2947 Abbreviation
- iOS开发笔记之十三——跳转到指定的controller类
- C语言一维数组&&二维数组练习
- 【POJ】2114 Boatherds 点分治