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指针绑定到左侧运算对象。成员运算符函数的参数数量比运算对象的数量少一个。
不能被重载的运算符:
:: .* . ?:


风斩冰华
27 声望12 粉丝

coding