美文网首页
GeekBand C++面向对象高级编程(上) 笔记&心得 1

GeekBand C++面向对象高级编程(上) 笔记&心得 1

作者: 复杂也不复杂的Mr囚 | 来源:发表于2016-09-29 22:15 被阅读0次

1.头文件防卫式声明

方式1:

#ifndef XXX

#define XXX

            代码段

#endif

使用防卫式声明防止文件被重复包含,在VS下使用

方式2:

#pragma once

实现,效果等同于方式1,但方式1可移植性更好。

2.Class的两种经典分类:

       class without pointer member

       class with pointer member

3.Class的声明:

class xxx

{

public:

     外置API接口函数,对类中对象的调用函数等

private:

     类的对象等

protected:

}

public,private,protected是访问级别(access level),不同访问级别有类与类,类与子类,类与类外函数之间有不同的访问策略

4.inline(内联函数)

使用inline内联声明可以对编译器提供建议,建议将此函数内联到class中,避免了编译器运行时去调用函数,可以使程序速度更快。

但inline只是对编译器建议,而是否内联取决于编译器。函数中代码越短内联的可能越高。

5.构造函数

构造函数与类同名,并且可以使用特殊的方式对对象初始化。

class complex

{

public:

      complex (double r = 0, double i = 0) : re (r), im(i) {  }           //使用特殊方式初始化,速度比re = i;更快

}

6.const

const 有许多不同的用法。

栗子1:

double real () const { return re; }                         //不能改变re的值。当re的值不改变时就加const。

为什么需要加const?

当程序员使用const complex c1(5, 5);这样子声明一个对象时,如果没有const声明而调用这个函数编译器会认为这个函数会改变类中对象(re, im)的值。

cout << c1.real();                                   //编译器会返回错误

编译器会返回错误。所以这种写法是更具考量的方式。

栗子2:

complex& operator += (const complex&);                    //如果complex的值不改变,使用const。

这样子如果接受的一个const对象也不会发生错误。

7.value VS reference

传参: 大原则上使用reference传参程序更快,而小原则上如果有小于4字节(char,bool等)的参数,可以使用value。

返回值:

第一种是local object,使用value传递。

第二种不是local object,使用reference更快。

8.overloading重载

重载要求:函数名相同,参数不相同。

相关文章

网友评论

      本文标题:GeekBand C++面向对象高级编程(上) 笔记&心得 1

      本文链接:https://www.haomeiwen.com/subject/ydrlyttx.html