【Boolan】C++面向对象编程(上)-Clarence
c语言面向过程,c++(以前为c with class)面向对象
面对对象的语言还有Java,C#
教学目的:良好的方式,快捷的效率,正规、大气的编程习惯。
class(私有)是定义类的关键字,类似于struct(公用)定义
Complex(复数):无指针的class;string(字符串):有指针的class
class之间的关系有:继承,复合,委托
Object Based(基于对象):面对单一class的设计;
Object Oriented(面对对象):面对多重class的设计,class之间的关系。
教材:C++Primer C++ programming language
效率提高:Effective C++ 及其中文版(侯捷)
源码: c++ standard library 及 stl源码剖析
代码基本形式: .h(header files):class declaraion(声明)
.cpp:#include<标准库> #include"自建"
C与C++在输出方面的区别:Ccout <<"i=" <
头文件中防御式声明:#ifndef _COMPLEX_
#define _COMPLEX_
头文件的布局:(前置声明,类声明,类定义)
class声明:class头>class体
三行与两行区别:先初始化后赋值
class模板(template):少数不同,定义T,后改为int double等
访问级别:关于公共private(封装)、私有 (P20)
C++允许有多个构造函数-overlording(重载)。同名的函数可以有一个以上(分情况)
ctor构造函数放入 private区(不能被外界调用):singleton设计模式
常量函数:加const(函数内数据不会发生变化),函数该加const的地方不能少
参数传递:pass byviewvsreference引用(to const、xxx&),尽量所有参数传递使用引用。和指针一样,参数会发生变化;如果不希望改变内容使用to const(const xxx&)。
返回值传递:return byvaluevsreference引用,和参数传递相同。当函数有一定时效(local object)时不能用引用。传递者无需知道接受者是以reference引用形式接受
friend(友元):friend不能太多,同一个class的各个对象互为friends
操作符重载-1:成员函数,如+=(赋值加法)complex::operator +=(const complex& r)一连串操作符
class定义(class body之外的定义):操作符重载-2,非成员函数(无this) +
临时对象(temp object):typename()如real(x);返回的如果是个local object不能返回引用(return by reference)
-(负号)判断是负号(negate)还是减号
==(判断,等不等于)!=(判断,不等于) <<(右边输出到左边)
共轭复数:return complex (real(x),-imag(x));