摘要:
下面的条框应该是谨记的:1. 新的type应该如何创建与销毁2. 对象的初始化与赋值应该有什么样的区别3. 新type的对象如果被pass-by-value,有什么影响?4. 什么事新type的合法值5. 新的type需要什么样的转换6. 什么样的操作符和函数对于这个type而言是合理的7. 什么样... 阅读全文
摘要:
先考虑下面这个接口:1 class Data{2 ...3 public:4 Data(int month, int day, int year);5 };虽然声明是比较合理的,但是有时候人们不一定会这样做,例如做下面这样调用对于客户来说也是完全可能的:Data(2, 30, 1995);可... 阅读全文
摘要:
先可考虑下下面这个语句:1 int prioriy();2 processWidget(shared_ptr(new Widget), priority());上面这条语句看似比较正常,不会泄露资源,但是实际上并非如此。调用上面这个语句的时候基本上分成三步:1. new Widget2. 根据Wid... 阅读全文
摘要:
首先思考下面的代码:1 string * stringArray = new string[100];2 ...3 delete stringArray; 这是最常见的错误之一了,new与delete不配对,但是仔细想想new与delete为什么一定要配对呢? 可以想到一种可能就在分配数组的时候... 阅读全文
摘要:
Given a positive integern, find the least number of perfect square numbers (for example,1, 4, 9, 16, ...) which sum ton.For example, givenn=12, return... 阅读全文
摘要:
Given an arraySofnintegers, find three integers inSsuch that the sum is closest to a given number, target. Return the sum of the three integers. You m... 阅读全文
摘要:
即使我们对一些资源使用了RAII类进行管理,但是还是不能避免很多的API需要你去提供原始的资源来对他们进行调用:例如对于条款13中的例子来说:1 shardPtr pInv(createInvestment);2 //看看下面这个函数3 int daysHold(const Investment *... 阅读全文
摘要:
首先假设对于一个mutex互斥器对象,有lock以及unlock两个函数可用:1 void lock(Mutex * pm);2 void unlock(Mutex * pm);那么为了防止资源忘记被释放,首先得想法就是创建一个RAII类来进行资源的管理,像下面这样:1 class Lock{2 ... 阅读全文