/* 訪问成员数组名事实上得到的是数组的相对地址。而訪问成员指针事实上是相对地址里的内容 */ struct buf_str { int length; char buf[0]; }; struct foo { buf_str* pbuf; }; void test_funny() { foo f ...
分类:
编程语言 时间:
2017-05-01 16:03:10
阅读次数:
172
this指针抽象比喻 当我们在进入一个房子之后, 可以看见房子里的桌子,椅子、 地板等,但是看不到房子的全貌。对于一个类的实例来说, 你可以看到它的成员 函数、 成员 变量, 但是实例本身呢? this是一个指针, 它时时刻刻指向这个实例。 一个对象的多个成员就可看作是这个对象所拥有的桌子,椅子、 ...
分类:
编程语言 时间:
2017-03-12 23:39:48
阅读次数:
235
使用new初始化对象中的指针成员时遇到的问题 在构造函数中使用new初始化指针成员,那么析构函数中就必须使delete,并且new对应delete, new[]则对应于delete[]。 在有多个构造函数的情况下,必须以相同的方式使用new,要不用new,要不用new[],因为只存在一个析构函数,所 ...
分类:
其他好文 时间:
2017-02-19 00:13:03
阅读次数:
137
参考:http://developer.51cto.com/art/201404/434678_all.htm 我觉得楼主的观点(访问成员指针其实是相对地址里的内容)在结构体指针为null时是成立的,当结构体指针不为null时(如上的例子),访问成员指针得到的其实是成员指针指向的内容。 ...
分类:
编程语言 时间:
2016-10-28 09:45:02
阅读次数:
242
这是 C++结构体 实现的 重载,多重继承,多态,虚基类,抽象类,类成员指针主要是为了 让大家更好认识C++结构体和类的区别 ...
分类:
编程语言 时间:
2016-10-27 19:25:06
阅读次数:
210
运算符的重载实际上是函数的重载,在实际过程中,首先把指定的运算表达式转化为对运算符函数的调用,将运算符对象转化为运算符函数的实参,然后根据实参的类型确定需要调用的函数,这个过程在编译的过程中完成。 不能重载的运算符 “.” 类属关系运算符 “.*”成员指针运算符 “::”作用域分辨符 “?:”三目运 ...
分类:
其他好文 时间:
2016-10-12 22:48:20
阅读次数:
152
运算符重载需遵循以下原则:1、除了类所属关系运算符"."、成员指针运算符".*"、作用域运算符"::"、sizeof运算符、三目运算符"?:"之外,C++中所有的运算符都可以进行重载2、重载运算符限制在C++已有的运算符范围内,不允许创建新的运算符3、重载之后的运算符不能改变运算符的优..
分类:
其他好文 时间:
2016-09-15 23:04:48
阅读次数:
379
在包含指针的类中需要注意复制控制,复制指针时只复制指针中的地址,不会复制指针指向的对象。 大多数c++类采用三种方法管理指针成员: 1)指针成员采用常规指针型行为。 2)采用智能指针 3)采取值型行为 常规指针缺陷:可能会出现悬垂指针。当一个指针复制到另一个指针,两个指针指向同一个对象,当一个指针删 ...
分类:
其他好文 时间:
2016-08-21 06:23:48
阅读次数:
143
以前都是用0来表示空指针的,但由于0可以被隐式类型转换为整形,这就会存在一些问题。关键字nullptr是std::nullptr_t类型的值,用来指代空指针。nullptr和任何指针类型以及类成员指针类型的空值之间可以发生隐式类型转换,同样也可以隐式转换为bool型(取值为false)。但是不存在到 ...
分类:
其他好文 时间:
2016-07-21 23:20:07
阅读次数:
348