Boolan微专业-面向对象高级编程学习笔记(Week01)

2018-01-07  本文已影响0人  GoMomi

C++简介

书籍推荐

Object Based vs. Object Oriented


Class without pointer member(complex)

1. 头文件

代码基本形式

// .h(Classes Declaration) + .cpp + .h(Standard Library)

#include <iostream.h>
#include "complex.h"
...
ex.main()
...

Header中的防御式声明

// 避免头文件重复include

#ifndef __COMPLEX__
#define __COMPLEX__
....
#endif

Header的布局

// forward declaration(前置声明)
#include <cmath>
class ostream;
....

// calss declarations(类-声明)
class complex{
    ....
};

// class definition(类-定义)
complex::function ....

2. Complex类设计

inline(内联)函数

访问级别

构造函数

Const Member Functions(常量成员函数)

Pass By Value vs. Pass By Reference(to const)

Return By Value vs. Return By Reference(to const)

Friend(友元)

重点

  1. 构造函数要使用 initialization list
  2. 函数本体内定义的函数需要加 const 的要加
  3. 参数尽可能 by refrence, 另需考虑加不加 const
  4. 返回值尽可能 by refrence
  5. 数据放在 private 里

扩展

  1. Initialization List 为什么好?参考地址
    • 对于内置类型的成员初始化和赋值没有大的区别
      • 在成员初始化列表和构造函数体内进行,在性能和结果上都是一样的
    • 对于非内置类型的成员变量,初始化列表能够避免两次构造
      • 类类型的数据成员对象在进入函数体前已经构造完成,也就是说在成员初始化列表处进行构造对象的工作,调用构造函数,在进入函数体之后,进行的是对已经构造好的类对象的赋值,又调用个拷贝赋值操作符才能完成
    • 部分情况必须上进行显示的初始化
      • 成员类型是没有默认构造函数的类。若没有提供显示初始化式,则编译器隐式使用成员类型的默认构造函数,若类没有默认构造函数,则编译器尝试使用默认构造函数将会失败
      • const成员或引用类型的成员。因为const对象或引用类型只能初始化,不能对他们赋值。
  2. Protected 访问权限
    • public 和 private 代表类的封装,protected 代表类的继承
    • 成员能被派生类对象访问,不能被类外访问
  3. Include " " 和 <> 参考地址
    • " "是从使用include的源文件所在目录找,然后再是系统目录
    • <>则直接从系统目录

3. 操作符重载与临时变量

成员函数

非成员函数

Temp Object(临时对象)

Return Void vs. Return Objects&

上一篇下一篇

猜你喜欢

热点阅读