object based vs object oriented
基于对象 Object based:面对单一class的设计
面向对象 Object oriented:面对多重classes之间的设计,classes与classes之间的关系。
classes两个经典分类:有指针vs无指针
c++代码基本形式
头文件classes声明+main函数+c++标准库
头文件的防卫式声明
#ifndef
#define
...
#endif
头文件布局
前置声明
类声明
类定义
inline函数
函数若在class内定义则自动inline函数候选人
若在class外定义需要前面添加关键字inline,但是是否真正成为内联函数需要由编译器决定。
访问级别
定义在public说明符之后的成员在整个程序内可被访问,public成员定义类的接口。
定义在private说明符之后的成员可以被类的成员函数访问,但是不能被使用该类的代码访问,private部分封装了类的实现细节。
构造函数
每个类都分别定义了他的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制对象的初始化过程,这些函数叫做构造函数。
一个类可以有多个构造函数(重载)对应不同的初始化方式。
//构造函数默认初始化方式
class complex
{
private:
double re;
double im;
}
complex(double r=0,double i=0): re(r), im(i) {}
//构造函数初始值列表初始化
friend友元函数
类可以允许其它类或者函数访问它的非公有成员,方法是令其他类或者函数成为它的友元。如果类想把一个函数作为它的友元,只需要增加一条以friend关键字开始的函数声明即可。
参数传递与返回值
值传递与引用传递
值传递 double real() const{return re;}
引用传递 complex& operator+=(const complex&);
local object 必须传值,因为离开作用域后local object将被析构。
常量成员函数
一个成员函数在其中不能修改对象的普通(即既不是static也不是mutable)数据成员。const成员的this指针是指向常量的指针,通过区分函数是否是const可以进行重载
操作符重载
data1+data2;/普通表达式
operator+(data1,data2);
当一个重载运算符是成员函数时,this指针绑定到左侧运算对象。成员运算符函数的参数数量比运算对象的数量少一个。
不能被重载的运算符:
:: .* . ?:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。