摘要: template声明式中,class和typename这两个关键字意义完全相同 template<class T> class Widget; template<typename T> class Widget; 有时候你一定要用typename, 可以在template中指涉的两种名称: template <typename C> void print2n... 阅读全文
posted @ 2012-02-14 21:08 lidan 阅读(825) 评论(0) 推荐(0)
摘要: 面向对象编程世界总是以显示接口(explicit interface)和运行期多态(runtime polymorphism)解决问题。 class Widget{ public: Widget(); virtual ~Widget(); virtual std::size_t size() const; vi... 阅读全文
posted @ 2012-02-14 17:27 lidan 阅读(555) 评论(0) 推荐(0)
摘要: 一旦涉及多重继承(multiple inheritance;MI): 程序有可能从一个以上的base class继承相同名称(如函数、typedef等)。那会导致较多的歧义机会。例如: class BorrowableItem { public: void checkOut(); }; class ElectronicGadet { p... 阅读全文
posted @ 2012-02-14 15:53 lidan 阅读(532) 评论(0) 推荐(0)
摘要: c++中public继承视为is-a关系。现在看private继承: class Person{...}; class Student: private Person {...}; void eat(const Person& p); void study(const Student& s); Person p; Student s; e... 阅读全文
posted @ 2012-02-14 10:39 lidan 阅读(661) 评论(0) 推荐(0)