数组与指针互访

有几个难点,指针:二重指针、一重指针、一维数组
二重指针:它指向的值还是指针
一重指针:它指向的值可以解引用*,得到数值,但一定要知道指针的类型。不然编译器元法知道如何解析的哪段内存。
一维数组:就是一段连续的内存,数组名也是数组头指针。

C++11新增关键字nullptr

nullptr关键字就是表示空指针的意思,C++11之前空指针都是NULL。已经有了NULL哪为什么还要有nullptr关键字?
nullptr表示空指针,不能转换为整型类型。为了向后兼容,C++11仍允许用0(NULL)来表示空指针。建议使用nullptr而不是0(NULL),因为更高的类型安全。

auto_ptr智能指针使用与局限性

auto_ptr就是智能指针,它其实是一个类类型,定义库中,具体定义可以看这篇:auto_ptr智能指针头文件下面写段使用auto_ptr智能指针的代码,让大家更容易理解auto_ptr如何使用。
1.两个auto_prt指针不能指向同一个内存:
2.不要将auto_prt对象作为STL容器的元素,C++标准明确禁止这样做。
3.不能将数组作为auto_ptr的参数

剑走偏锋修改类私有成员方法

大家在学习C++语言的时候,讲到类的访问权限问题时,对私有的private部份访问,书上写的都是只能是类内成员可以访问,也就是成员函数可以访问。类外部是不可以访问到,也修改不了值的。
今天跟大家讲一下比较锋茫的方法,在类外用指针来实现修改类内私有pravite成员。(指针是一把双刃 剑,一定要完全理解,不然会伤到自己)。学习以下内容还有预备知识,如果知道类在内存中存放,可以不用看,不明白的可以先看这篇:类中成员定义顺序在内存中排列

类中成员定义顺序在内存中排列

我们知道int一般是4字节,char是1个字节。哪么将这两个类型写到类中定义一个新类型,在内存中又会是占几个字节呢?有人可能会认为就是简单算术加,其时并非这样。写段类定义代码来测试验证类中成员在内存中如何排列。
如果大家有细心看上面的代码,会发现,还有一个问题?就是类中定义了一个set()成员函数,但用sizeof关键字计算字节长度并没明将set()函数占的计算在内?这里要讲的是成员函数实际上并不属于对象,它只是一种“特殊的全局函数”。编译器具体怎么编译实现成员函数,C++标准中没有规定这点。但以后要记住一点的是“类对象占内存大小是指成员变量,不含成员函数”,就可以了。