今天的第一部分内容先是了解了几个知识点。如下:
①内联函数
内联函数是将整个函数的代码插入到调用语句处,这样就不会产生调用函数的语句。
exp.
inline int Max(int a,int b) { if(a>b) return a; return b; }
②函数重载
一个或多个的函数名字相同,但是参数的个数或参数类型不同。
exp.
int Max(double f1,double f2){}(1) int Max(int n1,int n2){}(2) int Max(int n1,int n2,int n3){}(3) Max(3.4,2.5);//调用(1) Max(2,4);//调用(2) Max(3,2.4)//ERROR
这样一来函数命名变得简单了,编译器可以通过调用语句中的实参的个数和类型判断该调用哪个函数。
③函数的缺省参数
定义函数时可以让最右边的连续若干个参数有缺省值。
exp.
void fun(int x1,int x2=2,int x3=3){} fun(10);//等效于 fun(10,2,3) fun(10,,8)//不行,只能最右边连续若干个参数缺省。
类和对象
面向对象的程序=类+类...+类
设计程序的过程就是设计类的过程
1.从客观事物抽象出类
exp.输入矩形长宽,求出面积和周长。
将长宽变量以及设置长宽、求面积、求周长三个函数在一起就形成了一个“矩形类”。
长宽变量是这个“矩形类”的“成员变量”,三个函数是这个“矩形类”的成员函数。
成员变量和成员函数统称为类的成员。
class CRectangle { public: int w,h; int Area(){return w*h;} int Perimeter(){return 2*(w+h);} void Init(int w_,int h_){w=w_;h=h_;} };//类 int main() { int w,h; CRectangle r;//r是一个对象 cin>>w>>h; r.Init(w,h); cout<<r.Area()<<endl<<r.Perimeter(); return 0; }
att.对象所占内存空间的大小等于所有成员变量的大小之和。
sizeof(CRectangle)=8
2.对象间运算
att.对象之间可以用“=”赋值,但是不能比较大小,除非这些运算符入“>”“<”经过重载。
3.使用类的成员变量和成员函数
①对象名.成员名
exp.
CRectangle r1,r2; r1.w=5; r2.Init(5,4);//Init函数作用在r2上,执行r2.Init不会影响到r1
②指针->成员名
exp.
CRectangle r1,r2; CRectangle *p1=&r1; CRectangle *p2=&r2; p1->w=5; p2->Init(5,4);//Init作用在p2指向的对象上
③引用名.成员名
CRectangle r2; CRectangle &rr=r2; rr.w=5; rr.Init(5,4);//rr和r2的值都变了
来源:https://www.cnblogs.com/AirBirdDD/p/12244909.html