C++面向对象程序设计 课程笔记(一)
一、C++编程简介
1.课程目标
以良好的方式编写C++ class(代码的每一个单元)
两种class
(1)class without pointer members —— Complex 不含指针 (基于对象 object based)
(2)class with pointer members —— String 含指针 (面向对象 object oriented)
学习Class之间的关系
(1)继承(inheritance)
(2)复合(composition)
(3)委托(delegation)
2.C++的历史
new C→C with Class→C++
3.推荐书籍资料
语法相关:《C++ primer》、《C++ programming language》、《Effective C++》
标准库相关:《The C++ Standard Library》、《STL源码剖析》
4.Classes的两个经典分类
(1)Object Based:面对单一class的设计
(2)Object Oriented:面对多重classes的设计,classes和classes之间的关系
二、头文件与类的声明
1.C++代码的基本形式
(1).h(header files)+.cpp+.h(header files)
header files——classes declaration 类的声明、标准库
.cpp——ex.main()
(2)引用头文件
引用标准库——# include<iostream>
引用类——# include"complex.h"
2.Header(头文件)中的防卫声明
3.头文件的布局
三、构造函数
1.构造函数的特性
complex(double r=0, double i=0)
:re(r),im(i) ——初值列、初始列
{}
re(r)、im(i)将r、i分别设入re()、im(),在数值初始化阶段就已经将数据放入变量
2.函数重载
(1)同名函数可以存在多个
(2)函数重载在class中普遍存在
(3)若构造函数已有默认值,则不能写入同名同功能无默认值的函数
3.singleton
可以将构造函数写入private
四、参数传递与返回值
1.double real() const{return re;}
加入const使函数不会改变数据内容
若不加const可能在调用后改变数据(编译通不过)
2.参数传递
(1)pass by value 传值
将数据整包传输,效率低,尽量不用
(2)pass by reference 引用 complex&
传输地址,只需传输4个字节,效率高,参数传递最好传引用
3.返回值传递也尽量return by reference
4.不可以传引用、返回引用的情况
当函数结束本地变量会消亡时,不可传引用、返回引用
五、操作符重载与临时对象
1.操作符重载时的隐藏参数this
c2 +=c1 则this指c2,即this指向函数的调用者
2._doapl
为赋值加法运算符(+=)的函数