2015年7月26日
摘要: 1、【C++沉思录】句柄1 存在问题: 句柄为了绑定到Point的对象上,必须定义一个辅助类UPoint,如果要求句柄绑定到Point的子类上,那就存在问题了。2、有没有更简单的办法呢? 句柄使用Point*直接绑定到Point对象上(包括子类),为了保持多个句柄引用计数的一致性,使用int* 指向... 阅读全文
posted @ 2015-07-26 20:43 Andy Niu 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 1、在【C++沉思录】代理类中,使用了代理类,存在问题: a、代理复制,每次创建一个副本,这个开销有可能很大 b、有些对象不能轻易创建副本,比如文件2、怎么解决这个问题? 使用引用计数句柄,对动态资源封装,句柄包含指针,多个句柄可以指向同一个对象。复制的时候,只是复制句柄的指针。3、使用引用计数句柄... 阅读全文
posted @ 2015-07-26 20:41 Andy Niu 阅读(668) 评论(0) 推荐(0) 编辑
摘要: 1、考虑下面的场景:设计一个容器,包含一组类型不同但相互关联的对象(比如:Animal,Dog,Cat),对象具备多态行为。2、容器一般只能包含一种类型的对象,使用vector 会造成对象切割,不具备多态行为。3、经典的解决办法是:vector, 但是这会增加内存管理的负担。考虑下面的情况: Dog... 阅读全文
posted @ 2015-07-26 20:40 Andy Niu 阅读(699) 评论(0) 推荐(0) 编辑
摘要: 1、字符串太长,换行显示,怎么办?2、使用反斜杠,如下: string str = "abcd\ 1234"; 注意:反斜杠后面不准有任何字符。下一行开头的制表符不包含在整个字符串中,但是下一行开头的空格符包含在整个字符串中。3、使用双引号,如下: string str = "abcd" ... 阅读全文
posted @ 2015-07-26 13:31 Andy Niu 阅读(14570) 评论(0) 推荐(0) 编辑
摘要: C 语言宏定义1、例子如下: #define PRINT_STR(s) printf("%s",s.c_str()) string str = "abcd"; PRINT_STR(str); 结果如下:abcd2、现在我期望打印出,str=abcd, 容易想到的解决办法是: #define PRIN... 阅读全文
posted @ 2015-07-26 13:28 Andy Niu 阅读(1208) 评论(0) 推荐(0) 编辑
摘要: /*1、栈在堆上面,栈的地址减少,堆的地址增加。2、方法的参数在栈上,参数是从右向左入栈,为什么? 主要是为了解决可变参数的问题,从右向左入栈,栈顶是第一个参数, 而第一个参数,指出了参数个数,或者推断出参数个数(printf 的格式化字符串)。 从栈顶开始,可以遍历这些参数。3、pa本身也分配在栈... 阅读全文
posted @ 2015-07-26 13:21 Andy Niu 阅读(427) 评论(0) 推荐(0) 编辑