经典钟表实例:
class Clock
{
public :
void SetTime(int NewH,int NewM,int NewS);
void ShowTime();
private:
int Hour;
int Minute;
int Second;
};
void Clock::SetTime(int NewH,int NewM,int NewS)
{
Hour=NewH;
Minute=NewM;
Second=NewS;
}
void Clock::ShowTime()
{
cout<<Hour<<":"<<Minute<<":"<<Second<<endl;
}
内联成员函数
为了提高效率,较为简单的函数可以声明为内联形式;
声明方式:
将函数体放在类的声明中;使用 inline 关键字
对象:
声明形式:
类名 对象名;
Clock myclock;
类的应用举例:
#include<iostream>
using namespace std;
class Clock
{
public :
void SetTime(int NewH,int NewM,int NewS);
void ShowTime();
private:
int Hour;
int Minute;
int Second;
};
void Clock::SetTime(int NewH,int NewM,int NewS)
{
Hour=NewH;
Minute=NewM;
Second=NewS;
}
void Clock::ShowTime()
{
cout<<Hour<<":"<<Minute<<":"<<Second<<endl;
}
int main()
{
Clock myclock;
int x,y,z;
cin>>x>>y>>z;
myclock.SetTime(x,y,z);
myclock.ShowTime();
return 0;
}
输入:1 2 3
输出:1:2:3
构造函数:
作用:在对象被创建时,使用特定的值去构造对象,或者将对象初始化为一个特定的状态;
在对象创建时,由系统调用;
若未声明,在系统会自动产生;
可以把构造函数看做上面的 SetTime
#include<iostream>
using namespace std;
class Clock
{
public :
Clock (int NewH,int NewM,int NewS);
void ShowTime();
private:
int Hour;
int Minute;
int Second;
};
Clock::Clock(int NewH,int NewM,int NewS)
{
Hour=NewH;
Minute=NewM;
Second=NewS;
}
void Clock::ShowTime()
{
cout<<Hour<<":"<<Minute<<":"<<Second<<endl;
}
int main()
{
Clock myclock(1,2,3);
myclock.ShowTime();
return 0;
}
输出:1:2:3
拷贝构造函数:
是一种特殊的构造函数,形参为本类的对象引用;
class Clock
{
public :
Clock(int x,int y,int z);
Clock(Clock& c);
private:
....
}
Clock::Clock(Clock& c)
{
x=c.x;
y=c.y;
}
拷贝构造函数实例:
#include<iostream>
using namespace std;
class Clock
{
public :
Clock (int NewH,int NewM,int NewS);
void ShowTime();
private:
int Hour;
int Minute;
int Second;
};
Clock::Clock(int NewH,int NewM,int NewS)
{
Hour=NewH;
Minute=NewM;
Second=NewS;
}
void Clock::ShowTime()
{
cout<<Hour<<":"<<Minute<<":"<<Second<<endl;
}
int main()
{
Clock myclock(1,2,3);
Clock c2(myclock);
myclock.ShowTime();
c2.ShowTime();
return 0;
}
输出:
1:2:3
1:2:3
程序员如果没有自己声明拷贝构造函数,那么系统会自己生成一个拷贝构造函数。
用一个对象去声明另一个对象
析构函数:
完成对象被删除前的一些清理工作。释放空间。
如果程序未声明析构函数,编译器将自动产生一个默认的析构函数。
举例:
class Point
{
public (int xx,int yy);
~Point();
private:
int X,int Y;
};
Point::~Point()
{
}
class A
{
public :
A(int m,int n)
{
v=m;
p=new int (n);
}
~A(){delete p;}
private:
int v;
int *p;
};