- 构造函数名和类名相同。
- 构造函数是没有返回类型的。(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.