C++示例编程1
1、inline内联函数
使用内联函数的优点是可以节省程序运行的时间,因为省去了调用函数的堆栈的切换以及分配等操作,相当于用空间换取时间,但是一般直将代码行数在10行以内的简单函数作为内联使用,因为大型的函数如果展开,会增大代码的大小,反而减慢程序的运行,但是即使我们加上inline选项,编译器也不一定会为我们生成内联,编译器会自己判断是否将这个函数作为内联函数
2、构造函数
complex (double r = 0,double i = 0):
构造函数的参数是可以有初值的,当声明类时没有参数,就会调用默认参数的构造函数
然后是构造函数的赋值,可以使用初始列(initialize list)这样可以提高效率,因为省去了在函数体内做赋值的事件,而是将赋值完成在了函数体之前
一种特殊的情况(ctor in private)-将构造函数放在private里
可以通过提供一个额外的接口来实现,并且声明的是一个静态的对象,这样可以保证整个内存中只有一个类对象,而且访问的时候可以通过类直接访问,比如A::a
3、常量成员函数与常量参数
double real () const { return re; }
double imag () const { return im; }
如果不希望一个函数改变某个变量的值,那么可以在函数后面加上一个const修饰,来保证他不会修改变量的值,举一个例子
这里定义了一个常量对象,但是我们在调用它的成员变量的时候对他进行了修改,这就有可能会发生错误,所以在编写函数的时候要注意这一点
friend complex& __doapl (complex*, const complex&);
还有就是常量参数,常量参数用于保护参数不被改变,因为在编写函数的时候可能会对参数进行有意无意的改变,加上const修饰可以很好地避免这一点
4、传值和传引用
double real () const { return re; }
double imag () const { return im; }
friend complex& __doapl (complex*, const complex&);
operator << (ostream& os, const complex& x)
return os << '(' << real (x) << ','
还有一点就是在重载操作符的时候,返回值是流操作符,在特定情况下,有时返回void也可以,比如是重载赋值操作符,如果只有一步赋值,可以返回void,但是如果是连续赋值,则不可以
r1 = r2 = r3;//重载=不可以返回void,要返回ostream&
重载流操作符时,还有一点,就是流操作符参数不可以用const修饰,因为输出时会改变ostream的状态
5、临时变量-temp object
operator + (const complex& x, const complex& y)
return complex (real (x) + real (y),
complex (double r = 0, double i = 0)
complex& operator += (const complex&);
double real () const { return re; }
double imag () const { return im; }
friend complex& __doapl (complex*,
__doapl(complex* ths, const complex& r)
complex::operator += (const complex& r)
complex ( real (x) + real (y),
operator + (const complex& x, double y)
return complex (real (x) + y, imag (x));
operator + (double x, const complex& y)
return complex (x + real (y), imag (y));

浙公网安备 33010602011771号