- 构造函数名和类名相同。
- 构造函数是没有返回类型的。(C++中,不需要返回值. 用 void 返回类型也不行)
class queue{
int q[20];
int front,rear;
public:
queue(); //构造函数
void qput(int i);
int qget():
};
queue::queue(){
front=rear=0;
cout<<"Queue is initialized.\n";
}
通过析构函数来销毁对象。
- 析构函数的名和类名相同,但是多了个~(取反)符号。
- 也没有返回类型。
- 析构函数不能带参数。(在销毁对象的时候,没有办法将参数值传递给析构函数)
class queue{
int q[20];
int front,rear;
public:
queue(); //构造函数
~queue(); //析构函数
void qput(int i);
int qget():
};
queue::queue(){
front=rear=0;
cout<<"Queue is initialized.\n";
}
queue::~queue(){
cout<<"Queue is destroyed.\n";
}
构造函数参数化
- 创建对象的时候,为对象的成员变量设定初始值。
class queue{
int q[20];
int front,rear;
int myid; //保存队列的ID值.
public:
queue(int id); //给构造函数传递参数
~queue(); //析构函数
void qput(int i);
int qget():
}; queue::queue(int id){
front=rear=0;
myid=id;
cout<<"Queue"<<myid<<" is initialized.\n";
}
传递参数给构造函数,需要声明对象时给对象一个参数
第一种方法:
queue q1=queue(5);
第二种方法:(常用)
queue q1(5);
通用形式:
class-type var(arg-list); //arg-list是传递给构造函数的参数列表,以逗号分隔.
完整代码:
#include <iostream>
using namespace std;
//创建类queue
class queue{
int q[20];
int front,rear;
int myid;
public:
queue(int id); //参数化构造函数
~queue(); //析构函数
void qput(int i);
int qget();
};
queue::queue(int id){
front=rear=0;
myid=id;
cout<<"Queue"<<myid<<" is initialized.\n";
}
queue::~queue(){
cout<<"Queue"<<myid<<" is destroyed.\n";
}
//在队尾插入一个整数
void queue::qput(int i){
if(rear==20){
cout<<"Queue is full.\n";
return;
}
rear++;
q[rear]=i;
}
//在队首取出一个整数
int queue::qget(){
if(front==rear){
cout<<"Queue underflow.\n";
return 0;
}
front++;
return q[front];
}
int main(){
queue q1(1),q2(2); //创建2个queue 对象(object),并传递参数
q1.qput(15);
q2.qput(18);
q1.qput(25);
q2.qput(28);
cout<<"Queue q1: ";
cout<<q1.qget()<<" ";
cout<<q1.qget()<<"\n";
cout<<"Queue q2: ";
cout<<q2.qget()<<" ";
cout<<q2.qget()<<"\n";
return 0;
}
输出结果:
Queue1 is initialized.
Queue2 is initialized.
Queue q1: 15 25
Queue q2: 18 28
Queue2 is destroyed.
Queue1 is destroyed.