文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Exceptional C++ 学习笔记

Exceptional C++ 学习笔记

时间:2011-01-04  来源:苹果君

1尽可能地使用标准库中的类而不是自己编写

2为单参数构造函数加上explicit修饰

3 const Complex operator+(constComplex& other)

4 实现某个运算符的同时,最好实现与此运算符相应的赋值运算符,并且使用后者来实现前者。

5 operator+ 不应该是成员函数,应该是友元函数。

6 必须将 =,(),[],->运算符定义为成员函数,new,new[],delete,delete[]等定义为静态成员函数。

operator>>或者operator<<或者需要对做操作数进行类型转换,应该为非成员函数,最好是友元函数。或者如果可以通过类的公有接口实现,都应该设为非成员函数。

这种情况下如果要求运算符需要有虚函数的行为,那么通过调用类中的虚成员函数来实现,由虚成员函数实现虚函数行为。

7 ostream&operator<<(ostream& os, const Complex&);

8 Complex& operator++();

9 const Complex operator++(int);

Ex21 对虚函数进行重载

重载:相同作用域中才会发生。

覆盖:子类的函数名跟父类的函数名相同。

隐藏:相同的名字会使外层的作用域的函数被隐藏。

重写:虚函数的重写,一定要一模一样(名字跟参数签名)才会重写。

 

Ex22 类之间的关系

在基类中没有虚函数是此类不应该被公有继承的强烈提示。

在基类中没有保护成员是此类不应该被继承的强烈提示,包括公有继承和私有继承。

当一个类的实现需要依靠另外一个类的时候(也就是重用另外一个类的代码),优先选择使用组合方式。(只有涉及到保护成员的时候,才使用私有继承,Ex24有更加详细的描述)

 

Ex24 继承的使用和误用

使用非公有继承的情况

1 需要对基类的虚函数进行重写

2 需要访问基类的保护成员

3 需要在使用类之前构造被使用类,或者需要使用类析构之后才析构被使用类,简单地说就是需要被使用类的生命周期长于使用类。比如说,在被使用类中有用到锁机制,例如临界区等。

4

5 从空基类中得到的好处:编译器会对空基类进行优化。

6 保护继承有时候也可以塑模出is-a关系,就是访问基类的函数是友元函数或者成员函数的时候。(其实非公有继承不能塑模出is-a关系的根本原因就是外部函数收到访问限制)

不使用公有继承的情况

1 可以使用非公有继承的时候。

2 不是is-a 或者works-like-a关系。

相关阅读 更多 +
排行榜 更多 +
火柴人战争血腥打击

火柴人战争血腥打击

飞行射击 下载
三角符文第一章下载

三角符文第一章下载

角色扮演 下载
闪客快打3无敌版下载

闪客快打3无敌版下载

飞行射击 下载