2010年7月28日 星期三

NetBeans 使用 Boost

在 Visual Studio 2008 中使用 Boost 需要設定 Include Path
我的設定為: D:\dev\boost\boost_1_42_0

如下圖:


而在 NetBeans IDE 中,我也這樣設定,但是 compile 卻失敗,
花了我一個下午在查詢原因。 結論是它的斜線要反過來 @@"
D:\dev\boost\boost_1_42_0 ==> D:/dev/boost/boost_1_42_0
如下圖:



2010年7月6日 星期二

Effective C++ 條款心得

Table of Contents:

1. Accustoming Yourself to C++.

Item 1: View C++ as a federation of languages.

Item 2: Prefer consts, enums, and inlines to #defines.

Item 3: Use const whenever possible.

Item 4: Make sure that objects are initialized before they're used.

2. Constructors, Destructors, and Assignment Operators.

Item 5: Know what functions C++ silently writes and calls.

Item 6: Explicitly disallow the use of compiler-generated functions you do not want.

Item 7: Declare destructors virtual in polymorphic base classes.

Item 8: Prevent exceptions from leaving destructors.

Item 9: Never call virtual functions during construction or destruction.

Item 10: Have assignment operators return a reference to this.

Item 11: Handle assignment to self in operator=.

Item 12: Copy all parts of an object.

3. Resource Management.

Item 13: Use objects to manage resources.

Item 14: Think carefully about copying behavior in resource-managing classes.

Item 15: Provide access to raw resources in resource-managing classes.

Item 16: Use the same form in corresponding uses of new and delete.

Item 17: Store newed objects in smart pointers in standalone statements.

4. Designs and Declarations.

Item 18: Make interfaces easy to use correctly and hard to use incorrectly.

Item 19: Treat class design as type design.

Item 20: Prefer pass-by-reference-to-const to pass-by-value.

Item 21: Don't try to return a reference when you must return an object.

Item 22: Declare data members private.

Item 23: Prefer non-member non-friend functions to member functions.

Item 24: Declare non-member functions when type conversions should apply to all parameters.

Item 25: Consider support for a non-throwing swap.

5. Implementations.

Item 26: Postpone variable definitions as long as possible.

Item 27: Minimize casting.

Item 28: Avoid returning "handles" to object internals.

Item 29: Strive for exception-safe code.

Item 30: Understand the ins and outs of inlining.

Item 31: Minimize compilation dependencies between files.

6. Inheritance and Object-Oriented Design.

Item 32: Make sure public inheritance models "is-a."

Item 33: Avoid hiding inherited names.

Item 34: Differentiate between inheritance of interface and inheritance of implementation.

Item 35: Consider alternatives to virtual functions.

Item 36: Never redefine an inherited non-virtual function.

Item 37: Never redefine a function's inherited default parameter value.

Item 38: Model "has-a" or "is-implemented-in-terms-of" through composition.

Item 39: Use private inheritance judiciously.

Item 40: Use multiple inheritance judiciously.

7. Templates and Generic Programming.

Item 41: Understand implicit interfaces and compile-time polymorphism.

Item 42: Understand the two meanings of typename.

Item 43: Know how to access names in templatized base classes.

Item 44: Factor parameter-independent code out of templates.

Item 45: Use member function templates to accept "all compatible types."

Item 46: Define non-member functions inside templates when type conversions are desired.

Item 47: Use traits classes for information about types.

Item 48: Be aware of template metaprogramming.

8. Customizing new and delete.

Item 49: Understand the behavior of the new-handler.

Item 50: Understand when it makes sense to replace new and delete.

Item 51: Adhere to convention when writing new and delete.

Item 52: Write placement delete if you write placement new.

9. Miscellany.

Item 53: Pay attention to compiler warnings.

Item 54: Familiarize yourself with the standard library, including TR1.

Item 55: Familiarize yourself with Boost.

Appendix A: Beyond Effective C++.