【笔记】C++中一些易混淆的知识点

来源:互联网 发布:网络招生平台 编辑:程序博客网 时间:2024/05/19 21:43

Note

文章的知识点基本来自于《C++ Primer》,其中的观点可以看作是对原文的翻译

Public,Protected,Private三种继承方式

派生类在继承列表中通过在基类名字前加上权限标签来确定继承方式。

class Derived:Public Base {};

class默认Private方式继承,struct则是Public。
被继承元素的访问权限是由基类中的标签和派生类的继承列表中的权限标签共同决定的。
被继承元素在派生类中的访问权限只能够更严格。
1)Public:保持在基类中的权限
2)Protected:Public->Protected,Protected不变
3)Private:全部变成Private成员
如果想让某一元素例外,可以使用using。下面的代码中,虽然以Private方式继承Base,却保持了其Public属性。

class Base {public:    int base_val;};class Derived:Private Base {public:    using Base::base_val;};

利用size_type和size编写打印容器元素的模板

我们可能一开始会写出这样的代码

for ( T::size_type i = 0; i < x.size(); ++i )

不过,编译器会假定 T::size_type 是数据成员而产生编译错误。必须告诉它。

template<typename T> void d_print( const T& x ) {     for ( typename T::size_type i = 0; i < x.size(); ++i )        cout << x[i] << ' ';    cout << endl;}
0 0
原创粉丝点击