<<Exceptional C++>> notes
-
class Complex
{
public:
explicit Complex(double real, double imaginary = )
: real_(real), imaginary_(imaginary)
{
} Complex& operaor+=(const Complex& o)
{
real_ += o._real_;
imaginary_ += o.imaginary_;
return *this;
} Complex& operator++()
{
++real_;
return *this;
} const Complex operator++(int)// to avoid this expression: a++++
{
Complex tmp(*this);
++*this;
return tmp;
} ostream& Print(ostream& os) const
{
return os << ....;
}
private:
double real_, imaginary_;
}; const Complex operator+(const Complex& a, const Complex& b)
{
Complex ret(a);
ret += b;
return ret;
} ostream& operator<<(ostream& os, const Complex& c)
{
return c.Print(os);
}
class Complex
- My simple implementation for class string:
https://github.com/yaoyansi/mymagicbox/blob/master/mystring/src/mystring.h
https://github.com/yaoyansi/mymagicbox/blob/master/mystring/src/mystring.cpp
- 避免使用公有 虚函数, 应该使用Template Method模式
- #include<iosfwd>
- operator new(), operator delete()都是static函数, 即使他们没有被声明为static
- 永远不要多态地使用数组. 使用vector<>/deque<>而不要使用数组
- 一般来说, 避免编写自动转换(隐式类型转换)的代码, 即转换操作符
- 不要编写非显示构造函数
- T t//调用默认构造函数
T t()//声明了一个函数
T t(u)//直接初始化, 用u初始化变量t
T t=u// 调用拷贝构造函数
尽可能使用T t(u), 而非T t=u
- 当非内置返回类型使用by value返回时, 最好返回一个 const 值
- 正确使用mutable, 是正确使用const的关键
-
class A { public: virtual ~A(); }
class B : private virtual A {};
class C : public A {}
class D : public B, public C {}
A a1; B b1; C c1; D d1;
const A a2;
const A& ra1 = a1;
const A& ra2 = a2;
char c;
A *pa; B *pb; C *pc;
pa = (A*)& ra1;// pa = const_cast<A*>(&ra1)
pa = (A*)&a2;//因为a2是一个const对象, 所以结果未定义
pb = (B*)&c1;//pb = reinterpret_cast<B*>(&c1)
pc = (C*)&d1;//C里是错误的, c++里不需要转换
- 不要转调const, 使用mutable代替.
- 不要使用inline, 除非性能分析显示它是必要的
- 不要使用全局或静态变量. 如果要用, 需要注意他们的初始化顺序.
- 在构造函数初始化列表中的基类, 应该按照其在类声明中出现的顺序列出.
- 在构造函数初始化列表中的成员变量, 应该按照其在类声明中出现的顺序列出.
<<Exceptional C++>> notes的更多相关文章
- ASP.NET Core 1.1.0 Release Notes
ASP.NET Core 1.1.0 Release Notes We are pleased to announce the release of ASP.NET Core 1.1.0! Antif ...
- Android Weekly Notes Issue #237
Android Weekly Issue #237 December 25th, 2016 Android Weekly Issue #237 这是本年的最后一篇issue, 感谢大家. 本期内容包括 ...
- Android Weekly Notes Issue #230
Android Weekly Notes Issue #230 November 6th, 2016 Android Weekly Issue #230. Android Weekly笔记, 本期内容 ...
- Android Weekly Notes Issue #229
Android Weekly Issue #229 October 30th, 2016 Android Weekly Issue #229 Android Weekly笔记, 本期内容包括: 性能库 ...
- Android Weekly Notes Issue #227
Android Weekly Issue #227 October 16th, 2016 Android Weekly Issue #227. 本期内容包括: Google的Mobile Vision ...
- Android Weekly Notes Issue #221
Android Weekly Issue #221 September 4th, 2016 Android Weekly Issue #221 ARTICLES & TUTORIALS And ...
- Android Weekly Notes Issue #219
Android Weekly Issue #219 August 21st, 2016 Android Weekly Issue #219 ARTICLES & TUTORIALS Andro ...
- 某墙尼妹,用个Response.Filter来解决StackExchange.Exceptional中google cdn的问题
某墙墙了古古路,一些开源的东东里用了古古路CDN,比如Exceptional,Opserver ,导致服务要么慢要么用不了 必须要替换之 Exceptional就只要用Response.Filter替 ...
- MAGIC XPA最新版本Magic xpa 2.4c Release Notes
New Features, Feature Enhancements and Behavior ChangesSubforms – Behavior Change for Unsupported Ta ...
随机推荐
- BZOJ 1584 DP
显然序列不能超过sqrt(n),因为最差情况是每个都独立答案为n #include <iostream> #include <cstring> #include <cst ...
- Xcode下的批量编辑
说明:目前为止我找到三种查找与替换功能,如果有更多的方式,请在下面留言 第一种:我们常用的查找以及查找与替换功能 在Windows下,使用Ctrl+f 快捷键查找.用Ctrl+h来进行查找与替换功能. ...
- div内容滚动,无缝滚动
function startmarquee(lh, speed, delay) { var t; var oHeight = 373; /** div的高度 **/ ...
- ListView到顶部不可再拉
ListView到顶部不可再拉,主要针对魅族.索爱等手机: 如果你的程序针对的是2.3及以上版本,可以直接调用AbsListView的setOverScrollMode方法来解决这个问题. 如果还要兼 ...
- IIS错误:在唯一密钥属性 fileExtension=".url"时,无法添加类型为“mimeMap”的重复集合项
代码可以运行,但没有加载上样式,后来在IIS点击MIME类型时报错了 查看web.config中 <staticContent> <mimeMap fileExtension=&qu ...
- ViewStub的简单用法和说明
最近无意间知道了ViewStub,所以特地的去了解了一下 都知道ViewStub是一个不可见的,大小为0的View,实际上跟include差不多,但是ViewStub要更加节约资源.被称为是" ...
- Surprise团队第一周项目总结
Surprise团队第一周项目总结 团队项目 基本内容 五子棋(Gobang)的开发与应用 利用Android Studio设计一款五子棋游戏,并丰富其内涵 预期目标 实现人人模式:2个用户可以在同一 ...
- mybatis:Invalid bound statement (not found)
[常规解决办法] 如果出现: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 一般的原因 ...
- 2016 、12 、11<本周>
翻了翻记录 想把上周没搞出来的1159和day2T2搞出来.
- 安装mysql因为/tmp权限不足而导致ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)的解决方案
本机是centos 6.5 安装的mysql是5.1的版本. 在安装mysql之后,第一次启动mysql服务的时候,需要/tmp有777(rwxrwxrwx)的权限,然而楼主的/tmp是755(rw ...