今天的第一部分内容先是了解了几个知识点。如下:
内联函数是将整个函数的代码插入到调用语句处,这样就不会产生调用函数的语句。
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)//不行,只能最右边连续若干个参数缺省。
面向对象的程序=类+类...+类
设计程序的过程就是设计类的过程
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
att.对象之间可以用“=”赋值,但是不能比较大小,除非这些运算符入“>”“<”经过重载。
①对象名.成员名
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