2013年1月15日

C++ using关键字作用总结

摘要: 1.在当前文件中引入命名空间这是我们最熟悉的用法,例如:using namespace std;2.在子类中使用 using 声明引入基类成员名称(参见C++ primer)在private或者protected继承时,基类成员的访问级别在派生类中更受限:class Base {public:std::size_t size() const {return n; }protected:std::size_t n;};class Derived : private Base { . . . };在这一继承层次中,成员函数 size 在 Base 中为 public,但在 Derived中为 pr 阅读全文

posted @ 2013-01-15 21:16 androidme 阅读(445) 评论(0) 推荐(0) 编辑

C++继承:公有,私有,保护

摘要: 公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。1. 公有继承(public)公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。2. 私有继承(private)私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。3. 保护继承(protected)保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。下面列出三种不同的继 阅读全文

posted @ 2013-01-15 21:15 androidme 阅读(173) 评论(0) 推荐(0) 编辑

STL中的Concept和Boost库的Concept_Check

摘要: 在Generic Programming当中,一个重要的概念就是Concept(滑稽的是,如果把这个Concept也翻译成“概念”,那就狗屁不通了。我倾向于说它是 “操作集”)。Concept就是一组操作,如果一个type具有这些操作,那么就说这个type是这个Concept的一个model。这其中的思想有那么一丁点像是OO当中的interface,一个class如果实现了一个interface,那么它就可以被当作这个interface来用。同样,如果一个type是一个Concept的model,那么所有接受这个Concept的操作也就可以接受这个type。例如,在STL中,stable_so 阅读全文

posted @ 2013-01-15 21:14 androidme 阅读(798) 评论(0) 推荐(0) 编辑

explicit构造函数

摘要: 按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p );// 用C风格的字符串p作为初始化值//…}String s1 = “hello”;//OK 隐式转换,等价于String s1 = String(“hello”);但是有的时候可能会不需要这种隐式转换,如下:class String { String ( int n );//本意是预先分配n个字节给字符串String ( const char* p );// 用C风格的字符串p作为初始化值//…}下面 阅读全文

posted @ 2013-01-15 09:45 androidme 阅读(164) 评论(0) 推荐(0) 编辑

导航