zoukankan      html  css  js  c++  java
  • Return to the Basic 构造函数(Constructor),析构函数(Destuctor)

    通过构造函数,使对象在创建时就可以对自身进行初始化。
    - 构造函数名和类名相同。
    - 构造函数是没有返回类型的。(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.

  • 相关阅读:
    aspx,ascx和ashx使用小结
    修改CKFinder上传路径
    【python】如何在某.py文件中调用其他.py内的函数
    SpringMVC+hibernate4事务处理
    Hibernate执行原生SQL返回List<Map>类型结果集
    fastjson对Date的处理
    fastjson 的简单说明及使用
    字符串作为freemarker模板的简单实现例子
    Hibernate SQL 查询
    Spring整合Hibernate,Druid(Maven)
  • 原文地址:https://www.cnblogs.com/fdyang/p/2858752.html
Copyright © 2011-2022 走看看