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

posted @ 2020-02-23 15:54  李清私人网站  阅读(164)  评论(0编辑  收藏  举报