1.抽象:是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。
数据抽象:某类对象的属性或状态
行为抽象:某类对象的共同行为或功能特征(方法)
2.封装:将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体。也就是将数据和操作数据的函数代码进行有机的结合,形成类。
3.继承
4.多态
1.带默认形参值的成员函数
类成员函数的默认值,一定要写在类定义中,而不能写在类定义之外的函数中。
Class clock{
Public:
Void setTime(int newH=0, int newM=0, int news=0);
…
}
如果调用这个函数时没有给出实参,就会按照默认的形参值将时钟设置到午夜0点。
2.内联成员函数(inline function)
内联函数的声明有两种方式:隐式声明和显示声明。
(1)隐式声明:将函数直接放在类体里。
class Clock{
public:
void showTime(){
cout<<hour<<”:”<<minute<<”:”<<second<<endl;
}
}
(2)显示声明:采用关键字inline。在函数体实现时,在函数返回值类型前加上inline,类定义中不加showTime()的函数体。
Inline void showTime(){
cout<<hour<<”:”<<minute<<”:”<<second<<endl;
}
3.构造函数
(1)构造函数的函数名和类名相同
(2)没有返回值
(3)声明为public
构造函数在对象被创建时自动调用,调用时无须提供参数的构造函数称为默认构造函数。
构造函数的重载:有参数的和无参数的。
复制构造函数
特点:其形参是本类的对象的引用。其作用是使用一个已经存在的对象,去初始化同类的一个新对象。
class 类名{
public:
类名(形参表);
类名(类名 &
对象名);
…
};
类名::类名(类名 &
对象名){
//函数体
}
复制构造函数在3中情况下被调用:
(1)当用类的一个对象去初始化该类的另一个对象时。
int main(){
Point a(1,2);
Pointb(a); //用对象a去初始化b,调用复制构造函数
Pointc=a; //用对象a去初始化c,调用复制构造函数
return0;
}
(2)如果函数的形参是类的对象,调用函数时,进行形参和实参的结合。
void f(Point p){
cout<<p.getX()<<endl;
}
int main(){
Point a(1.2)
f(a);
return0;
}
注意:只有把对象用值传递时,才会调用复制构造函数;如果传递引用,则不会调用。
(3)如何函数的返回值是类的对象,函数执行完成返回调用者时。
Point g(){
Point a(1,2);
return a;
}
int main(){
Point b;
b=g();
return 0;
}
4.析构函数
(1)类名前加~
(2)没有返回值
(3)不接收任何参数,可以是虚函数。
作用:用来完成对象被删除前的一些清理工作,在对象生命周期即将结束的时刻被调用。