读书笔记
文章平均质量分 79
pandawuwyj
这个作者很懒,什么都没留下…
展开
-
Effective C++读书笔记(5)
条款07:为多态基类声明virtual析构函数Declare destructors virtual inpolymorphic base classes建立一个 TimeKeeper基类,并为不同的计时方法建立派生类:class TimeKeeper {public:TimeKeeper();virtual ~TimeKeeper();...};class A原创 2012-01-21 18:38:11 · 433 阅读 · 0 评论 -
Effective C++读书笔记(20)
条款31:将文件间的编译依存关系降至最低Minimize compilation dependencies betweenfiles假设你对一个类的实现进行了细微的改变。提醒你一下,不是类的接口,只是实现,仅仅是 private 的东西。然后你重建(rebuild)这个程序,在 Build上点击或者键入 make(或者其它等价行为),接着你突然意识到整个程序都被重新编译和连接!问题原创 2012-02-08 23:22:45 · 798 阅读 · 0 评论 -
Effective C++读书笔记(21)
昨天颓废了 今天*2条款32:确定你的public继承塑模出is-a关系Make sure public inheritance models “is-a”使用C++语言进行面向对象编程时最重要的规则就是:publicinheritance意味着"is-a"关系。如果令class D ("Derived") 从 class B ("Base") public继承,就是在告诉原创 2012-02-10 23:44:00 · 834 阅读 · 0 评论 -
Effective C++读书笔记(22)
条款34:区分接口继承和实现继承Differentiate between inheritance ofinterface and inheritance of implementationpublic inheritance是由两个相互独立的部分组成的:inheritance of function interfaces(函数接口继承)和 inheritanceof function i原创 2012-02-10 23:45:07 · 795 阅读 · 0 评论 -
Effective C++读书笔记(23)
条款35:考虑virtual函数以外的其他选择Consider alternatives to virtual functions现在你正在写一个视频游戏,在游戏中为角色设计了一个继承体系。你决定提供一个成员函数healthValue,它返回一个表示角色健康状况如何的整数。因为不同的角色计算健康值的方法可能不同,将healthValue声明为 virtual似乎是显而易见的设计选择:c原创 2012-02-11 23:58:13 · 928 阅读 · 0 评论 -
Effective C++读书笔记(24)
条款36:绝不重新定义继承而来的non-virtual函数Never redefine an inherited non-virtualfunction有如下代码:class B {public: void mf(); ...};class D: public B { ... };虽然我们对B,D或mf一无所知,但面对一个类型为D的对象x:D x原创 2012-03-08 23:29:05 · 754 阅读 · 0 评论 -
Effective C++读书笔记(25)
条款38:通过复合塑模出has-a或“根据某物实现出”Model “has-a” or “is-implemented-in-terms-of”through composition复合(composition)是类型之间的一种关系,当某种类型的对象内含另一种类型的对象,便是这种关系。例如:classAddress { ... }; // 某人的住址classPhoneNumber原创 2012-04-01 00:11:14 · 955 阅读 · 0 评论 -
Effective C++读书笔记(26)
条款40:明智而审慎地使用多重继承Use multiple inheritance judiciously触及multiple inheritance (MI)(多继承)的时候,C++ 社区就会鲜明地分裂为两个基本的阵营。一个阵营认为如果single inheritance (SI)(单继承)是有好处的,multiple inheritance(多继承)一定更有好处。另一个阵营认为sing原创 2012-04-01 23:25:59 · 828 阅读 · 0 评论 -
Effective C++读书笔记(27)
条款41:了解隐式接口和编译期多态Understand implicit interfaces andcompile-time polymorphism面向对象编程以显式接口和运行期多态为中心。例如:class Widget {public: Widget(); virtual ~Widget(); virtual std::size_t size()原创 2012-04-04 00:19:14 · 1064 阅读 · 0 评论 -
Effective C++读书笔记(28)
条款43:学习处理模板化基类内的名称Know how to access names in templatizedbase classes假设我们要写一个应用程序,它可以把消息传送到几个不同的公司去,消息既可以以加密方式也可以以明文(不加密)的方式传送。如果我们有足够的信息在编译期间确定哪个消息将要发送给哪个公司,我们就可以采用基于模板的解法:class CompanyA {pub原创 2012-04-20 23:44:20 · 883 阅读 · 0 评论 -
cocos2d-x与lua用法整理
Cocos2d-x 2.20以上版本没有了创建模板,创建的方式改用了Python创建,方法如下:python create_project.py -project HelloWorld -package com.Panda.Game -language cpp若要创建lua工程,结尾的cpp改成lua然后创建出来的sln工程文件打开来,直接运行会发现已经是个成品了,有画面有原创 2014-01-05 17:54:44 · 2984 阅读 · 0 评论 -
看书小记4(《C专家编程》)
日期与时间struct tm { int tm_sec; /* 秒 – 取值区间为[0,59] */ int tm_min; /* 分 - 取值区间为[0,59] */ int tm_hour; /* 时 - 取值区间为[0,23] */ int tm_mday; /* 一个月中的日期原创 2014-04-30 00:48:00 · 1145 阅读 · 0 评论 -
看书小记6(《C专家编程》)
typedef不常见但值得一提的用途:1. 用typedef来定义与平台无关的类型。比如定义一个叫 REAL 的浮点类型,在目标平台一上,让它表示最高精度的类型为:typedef long double REAL; 在不支持 long double 的平台二上,改为:typedef double REAL; 在连 double 都不支持的平台三上,改为:typedef原创 2014-05-03 02:02:41 · 1024 阅读 · 0 评论 -
看书小记5(《C专家编程》)
函数指针1. 函数与函数指针类型要匹配;2. 函数指针用来保存函数首地址,即可以通过该指针访问函数;3. 函数指针可以指向一类函数,而不是一个函数,即可以重新赋值。int maxNumber(int a, int b){return a > b? a: b;}void fileFunc(){ coutvoid editFunc(){原创 2014-05-01 23:37:55 · 786 阅读 · 0 评论 -
看书小记1(《C专家编程》)
#include "stdafx.h"#include using namespace std;void foo(const char **p){}void charFoo(const char *p){}int _tmain(int argc, char** argv){//foo(argv);char* p = NULL;charFoo(p)原创 2014-04-24 22:35:13 · 877 阅读 · 0 评论 -
看书小记2(《C专家编程》)
1. NUL用来结束一个ACSII字符串, NULL表示空指针2. break语句跳出最近的那层循环语句或switch语句3. static: (1). 修饰局部变量局部变量存放在栈,生命周期随语句块结束而结束。static对局部变量修饰后,作用域不变,但生命周期持续到整个程序结束,并存放在静态数据区。用static修饰局部变量,只在初次运行时进行初始化,且只原创 2014-04-27 00:33:44 · 1196 阅读 · 0 评论 -
看书小记3(《C专家编程》)
gets()不检查缓冲区空间,多出来的字符会覆盖堆栈原先的内容。fgets()的第二个参数说明最大读入的字符数。如果这个参数值为n,那么fgets()就会读取最多n-1个字符或读完一个换行符为止。两个条件满足任意一个结束。fgets()读取到换行符,就会把它存到字符串里,而不是想gets()那样丢弃它。fgets()的第三个参数说明读哪个文件。从键盘上读数据时,可以使用stdin(代表原创 2014-04-28 23:48:54 · 968 阅读 · 0 评论 -
《深入理解计算机系统》(1)
typedef unsigned char* byte_pointer;void show_bytes(byte_pointer start, int len){for (int i = 0; i {printf("%2x", start[i]);}cout}int _tmain(int argc, _TCHAR* argv[]){char* b原创 2014-06-03 23:03:48 · 1432 阅读 · 0 评论 -
Effective C++读书笔记(19)
条款30:透彻了解inlining的里里外外Understand the ins and outs of inlininginline函数看起来像函数,产生的效果也像函数,比宏好得多,而你却可以在调用它们时不招致函数调用的成本。实际上你得到的可能比你想的更多,因为避免函数调用的成本只是inline好处的一部分。当你 inline 化一个函数,编译器或许有能力对函数本体执行语境相关最优化。原创 2012-02-07 21:54:59 · 601 阅读 · 0 评论 -
Effective C++读书笔记(18)
条款29:为“异常安全”而努力是值得的Strive for exception-safe code假设我们有一个类,代表带有背景图像的GUI菜单。这个类被设计成在多线程环境中使用,所以它有一个用于并行控制(concurrencycontrol)的互斥体(mutex):class PrettyMenu {public:void changeBackground(std::istr原创 2012-02-06 19:38:13 · 572 阅读 · 0 评论 -
Effective C++读书笔记(4)
条款05:了解C++默默编写并调用哪些函数Knowing what functions C++ silentlywrites and calls一个 emptyclass(空类)什么时候将不再是 empty class(空类)?答案是当 C++ 处理过它之后。如果你自己不声明一个拷贝构造函数,一个 copyassignment运算符和一个析构函数,编译器就会声明一个它自己的版本。此外,原创 2012-01-20 16:49:49 · 588 阅读 · 0 评论 -
Effective C++读书笔记(3)
条款04:确定对象被使用前已先被初始化Make sure that objects are initializedbefore they're used.关于"将对象初始化"这事,C++ 似乎反复无常。在某些语境下内置类型和类的成员变量保证被初始化,但在其他语境中却不保证。读取未初始化的值会导致不明确的行为。它可能让你的程序终止运行,可能污染了正在进行读取动作的那个对象,可能导致不可测原创 2012-01-19 22:58:17 · 545 阅读 · 0 评论 -
Effective C++读书笔记(6)
新年了~忙着东奔西跑3天,是时候回归正常生活了……条款08:别让异常逃离析构函数Prevent exceptions from leavingdestructorsC++ 不禁止但不鼓励从析构函数引发异常。考虑:class Widget {public: ... ~Widget() { ... } // 假设这里可能吐出一个异常};void原创 2012-01-25 21:52:43 · 435 阅读 · 0 评论 -
Effective C++读书笔记(8)
条款12:复制对象勿忘其每一个成分Copy all parts of an object设计良好的面向对象系统中,封装了对象内部,仅留两个函数用于对象的拷贝:拷贝构造函数和拷贝赋值运算符,统称为拷贝函数。编译器生成版的copy函数会拷贝被拷贝对象的所以成员变量。考虑一个表现顾客的类,这里的拷贝函数是手工写成的,以便将对它们的调用志记下来:void logCall(const std原创 2012-01-27 23:41:43 · 454 阅读 · 0 评论 -
Effective C++读书笔记(2)
条款03:尽可能使用constUse const whenever possible. const允许你告诉编译器和其他程序员某值应该保持不变。 如果关键字const出现在星号左边,表示被指物是常量;如果出现在星号右边,表示指针自身是常量;如果出现在星号两边,表示被指物和指针两者都是常量。1. char greeting[] = "Hello";原创 2012-01-18 22:27:08 · 511 阅读 · 0 评论 -
Effective C++读书笔记(9)
条款14:在资源管理类中小心copying行为Think carefully about copying behaviorin resource-managing classes条款13介绍了作为资源管理类支柱的 Resource Acquisition IsInitialization (RAII) 原则,并描述了 auto_ptr 和 tr1::shared_ptr 在基于堆的资源上运原创 2012-01-28 19:29:26 · 532 阅读 · 0 评论 -
Effective C++读书笔记(1)
条款01:视C++ 为一个语言联邦View C++ as a federation of languages.今天的C++ 已经是一个同时支持过程形式(procedural)、面向对象形式(object-oriented)、函数形式(functional)、泛型形式(generic)、元编程形式(metaprogramming)的语言。将C++ 视为一个由相关语言组成的联邦而非单一语言。原创 2012-01-17 18:15:14 · 521 阅读 · 0 评论 -
Effective C++读书笔记(7)
昨天偷懒了,今天补。条款10:令operator=返回一个reference to *thisHave assignment operators return areference to *this关于赋值的一件有意思的事情是你可以把它写成连锁形式。int x, y, z; x = y = z = 15; // 赋值连锁形式,相当于x = (y = (z = 1原创 2012-01-27 23:40:29 · 451 阅读 · 0 评论 -
Effective C++读书笔记(0)
作为明年7月入职的职场新人,虽然大学里写了不少project,但实战经验匮乏,实在不是什么牛人。所以还是笨鸟先飞,在一段非常闲适的日子里买来了Effective C++,想进一步提升自我,在入职前打好基础,特此边研读边做笔记一份,有摘录有总结有自己的一些理解。我知道这玩意儿基本没什么人观摩,但万一有人走过路过,望不吝赐教。 Start声明式(Declaration):告诉编译器某个东西原创 2012-01-16 21:54:13 · 537 阅读 · 0 评论 -
Effective C++读书笔记(10)
条款16:成对使用new和delete时要采取相同形式Use the same form in corresponding uses ofnew and delete当你对一个指针使用 delete,唯一能够让delete知道内存中是否存在一个“数组大小记录”的方法就是由你来告诉它。如果你在使用的 delete 中加入了方括号,delete 就认定那个指针指向一个数组。否则,就认定指向一个原创 2012-01-29 15:13:20 · 604 阅读 · 0 评论 -
Effective C++读书笔记(11)
条款17:让接口容易被正确使用,不易被误用Make interfaces easy to use correctly andhard to use incorrectlyC++ 被淹没于接口中。函数接口、类接口、模板接口。每一个接口都是客户与你的代码互动的手段。在理想情况下,如果使用某个接口而没有得到预期的行为,这个代码不该编译通过,反过来,如果代码可以编译,那么它做的就是客户想要的。原创 2012-01-30 22:34:41 · 687 阅读 · 0 评论 -
Effective C++读书笔记(12)
条款19:设计class 犹如设计typeTreat class design as type design在 C++ 中,就像其它面向对象编程语言,可以通过定义一个新的类来定义一个新的类型。作为一个C++开发者,你的大量时间就这样花费在扩张你的类型系统。这意味着你不仅仅是一个类的设计者,而且是一个类型的设计者。重载函数和运算符,控制内存分配和回收,定义对象的初始化和终结过程——这些全在你原创 2012-01-31 21:33:44 · 608 阅读 · 0 评论 -
Effective C++读书笔记(13)
条款21:必须返回对象时,别妄想返回其referenceDon’t try to return a reference when youmust return an object一旦程序员抓住对象传值的效率隐忧,很多人就会一心一意根除传值的罪恶。他们不屈不挠地追求传引用的纯度,但他们全都犯了一个致命的错误:他们开始传递并不存在的对象的引用。考虑一个用以表现有理数的类,包含一个函数计算两个有原创 2012-02-01 23:00:15 · 707 阅读 · 0 评论 -
Effective C++读书笔记(14)
条款23:宁以non-member、non-friend替换member函数Prefer non-member non-friend functions tomember functions想象一个用来表示网页浏览器浏览器的类。这样一个类可能提供的大量函数中,有一些用来清空下载元素高速缓存区、清空访问过的URLs历史,以及从系统移除所有cookies的功能:class WebBrows原创 2012-02-02 21:54:56 · 558 阅读 · 0 评论 -
Effective C++读书笔记(16)
条款26:尽可能延后变量定义式出现的时间Postpone variable definitions as long as possible只要你定义了一个带有构造函数和析构函数的类型变量,当控制流程到达变量定义时,你会承受构造成本,而当变量离开作用域时,你会承受析构成本。如果有最终并未被使用的变量造成这一成本,你就要尽你所能去避免它。不要认为自己不会定义一个不使用的变量。考虑下面这个函原创 2012-02-04 17:38:48 · 558 阅读 · 0 评论 -
Effective C++读书笔记(17)
条款27:尽量少做转型动作(2)Minimize casting不要认为强制转换除了告诉编译器将一种类型看作另一种之外什么都没做,任何种类的类型转换(无论是通过强制转换的显式还是编译器添加的隐式)都会导致运行时的可执行代码。例如: intx, y;double d = static_cast(x)/y; // x除以y,使用浮点数除法int到double的强制转换理所当然原创 2012-02-05 23:36:44 · 614 阅读 · 0 评论 -
Effective C++读书笔记(15)
条款25:考虑写出一个不抛异常的swap函数Consider support for a non-throwing swapswap是一个有趣的函数。最早作为STL的一部分被引入,后来它成为异常安全编程(exception-safeprogramming)的支柱,和用来处理自我赋值可能性的常见机制。因为 swap太有用了,所以正确地实现它非常重要,但是伴随它不同寻常的重要性而来的,是一系列原创 2012-02-03 22:59:31 · 719 阅读 · 0 评论 -
看书小记9(《C专家编程》)
哈希表简单实现,练个手#include "stdafx.h"#include using namespace std;#define HASHSIZE 12typedef struct HashTable{int *elem;int count;}HashTable;int m = 0;void Print(HashTable*原创 2014-05-24 22:03:51 · 806 阅读 · 0 评论