C++
1. 双精度变量与0的比较:
const double eps = 0.000000001; double a = 0.00000000001; double b = 0.000000002; if (a >= -eps && a <= eps) // if(a <= -eps || a >= eps) cout << "a == 0" << endl; else cout << "a != 0" << endl; if (b >= -eps && b <= eps) cout << "b == 0" << endl; else cout << "b != 0" << endl;
2. 参数列表、初始化列表:
.h: class Complex { public: //外部接口 Complex(double real=0.0, double imag=0.0); //另外,带有默认值参数应放在列表的最右端 //Complex(double real, double imag=0.0) private: //私有数据成员 double real; //实部 double imag; //虚部 } .cpp: //带有默认值参数的函数,在实现的时候,参数上是不能有值的 error: Complex::Complex(double real=0.0, double imag=0.0){...} //另外,只有构造函数能使用初始化列表,其在构造函数执行前执行 Complex::Complex(double real, double imag) :real(real), imag(imag){}
3. 重载单目运算符(一元运算符)++ 、--:
前置与后置的区分:(1)后置带有整型形
(2)前置返回计算后的值,后置返回计算前的值。
4. 重载赋值运算符‘=’:
(1)首先,需要进行是否是自我赋值操作的验证;
(2)其次,要释放左操作数的资源:
方法1 先保存原来的资源,等重新分配资源完成以后再释放以前的资源),
方法2 采用copy and swap技术;
(3)返回类型,为了具有连续赋值的效果,一般都返回引用类型。
5. new / delete 和 malloc / free 的区别:(参考https://blog.csdn