C++面向对象高级编程(上)-第一周笔记 | Boolan

笔记时间:2017-10-09 ~ 2017-10-23    来源:网易云课堂 / Boolan / GeekBand

授课老师:侯捷

说明:结合C++面向对象高级编程(上)视频课程和《C++ Primer中文版》(第5版)记录知识点。


第一课 C++编程简介

目标:

培养正规大气的编程习惯;

以良好的方式编写C++ class(Object Based基于对象)class without pointer members / class with pointer members

学习Classes之间的关系(Object Oriented面向对象):继承(inheritance);复合(composition);委托(delegation)

推荐书目:《C++ Primer》(第五版)、《The C++ Programming Language》(Fourth Edition)、《Effective C++》、《THe C++ Standard Library》、《STL源码剖析》

C++面向对象高级编程(上)-第一周笔记 | Boolan_第1张图片
C与C++,关于数据和函数
C++面向对象高级编程(上)-第一周笔记 | Boolan_第2张图片
C++,带指针与不带指针的类(类的两个经典分类)

Objective Based:面对的是单一class的设计;Objective Oriented:面对的是多重classes的设计,classes和classes之间的关系。


第二课 头文件与类的声明

C++面向对象高级编程(上)-第一周笔记 | Boolan_第3张图片
C++ 代码基本形式

文件扩展名不一定是.h或.cpp,也可能是.hpp或其他甚至无扩展名(与编译器平台有关)

C++面向对象高级编程(上)-第一周笔记 | Boolan_第4张图片
Output,C++ vs.C

头文件(Header)中的防卫式声明:

(头文件complex.h)

#ifndef __COMPLEX__

#define __COMPLEX__

……

#endif

(主程序complex-test.h)

#include "complex.h"

C++面向对象高级编程(上)-第一周笔记 | Boolan_第5张图片
complex-test.h

头文件的布局:

C++面向对象高级编程(上)-第一周笔记 | Boolan_第6张图片
头文件的布局
C++面向对象高级编程(上)-第一周笔记 | Boolan_第7张图片
class的声明(declaration)

{

complex c1(2,1);

complex c2;

}

C++面向对象高级编程(上)-第一周笔记 | Boolan_第8张图片
class template(模板)简介

inline(内联)函数

不是所有写的inline函数编译器都能做成inline

函数若在class body内定义完成,便自动成为inline候选人

C++面向对象高级编程(上)-第一周笔记 | Boolan_第9张图片
inline函数

access level(访问级别):

“public” “private” (“protected”例子中不涉及)

public、private段落可任意交错出现。不一定要集中写。



第三课 构造函数

C++面向对象高级编程(上)-第一周笔记 | Boolan_第10张图片
构造函数

构造函数名与类名相同;

无需返回类型,因为构造函数是用来创建对象;

构造函数可以有很多个-overloading(重载);

函数重载:同一作用域内的几个函数名字相同但形参列表不同。

调用这些函数时,编译器会根据传递的实参类型推断想要的是哪个函数。

main函数不能重载。

C++面向对象高级编程(上)-第一周笔记 | Boolan_第11张图片
重载函数(real())

上例中,第一个complex有默认实参,第二个complex无类型,编译器不知道调用哪一个,有冲突。

C++面向对象高级编程(上)-第一周笔记 | Boolan_第12张图片
构造函数放在private中。singleton设计模式

构造函数放在private里,不可在外部调用。



第四课 参数传递与返回值

const member functions(常量成员函数)

参数传递:pass by value  vs. pass by reference

尽量不要传value,C中传指针。

C++中可传引用。

const的引用

把引用绑定到const对象上。

友元:自由取得friend的private成员。相同class的各个objects互为友元。

C++面向对象高级编程(上)-第一周笔记 | Boolan_第13张图片
相同class的各个objects互为友元

第五课 操作符重载与临时对象

C++面向对象高级编程(上)-第一周笔记 | Boolan_第14张图片
头文件布局(本课关注2的部分)

操作符重载-成员函数:this

二元操作符:+=

C++面向对象高级编程(上)-第一周笔记 | Boolan_第15张图片
操作符重载-成员函数

成员函数带隐含参数this(调用者)。上例中c2为this。

C++面向对象高级编程(上)-第一周笔记 | Boolan_第16张图片
return by reference 语法分析

连串使用时若函数设为void,则c2无法向c3传递。

C++面向对象高级编程(上)-第一周笔记 | Boolan_第17张图片
成员函数定义

操作符重载-非成员函数:无this

C++面向对象高级编程(上)-第一周笔记 | Boolan_第18张图片
非成员函数示例

temp object(临时对象) - typename();

C++面向对象高级编程(上)-第一周笔记 | Boolan_第19张图片
临时对象及其语法

typename()用法上相当于int();

上例中complex()使用默认参数。


第六课 复习Complex类的实现过程

复演Complex类的代码编写中思维的流程。

你可能感兴趣的:(C++面向对象高级编程(上)-第一周笔记 | Boolan)