zoukankan      html  css  js  c++  java
  • 面向对象——(3)构造函数与析构函数

        构造函数负责完成程序中的初始化工作,而析构函数负责完成程序中的清理工作

        如果用户没有定义构造函数和析构函数,会自动生成一个默认的构造函数和析构函数。

    1、构造函数

    构造函数(constructor)是与类名相同 的,在建立对象时自动调用的函数,专门用于对象初始化的函数。

    在需要为对象数据成员动态分配内存时,构造函数总与new运算符一起使用在创建对象的语句中。


    (1)构造函数的命名必须和类名完全相同。

    (2)构造函数的功能主要用于在类的对象创建时定义初始化的状态,它没有返回值,也不能用void来修饰。

    (3)它不能被直接调用,必须在创建对象时才会由编译器自动调用。


    C#实例:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 构造函数
    {
        class Employee
        {
            private string _name;
            private char _gender;
            private string _qualification;
            private uint _salary;
            //默认构造函数
            public Employee()
            {
                _qualification = "研究生";
            }
            //调用默认构造函数
            static void Main(string[] args)
            {
                Employee objEmployee = new Employee();
                Console.WriteLine("资格=" + objEmployee._qualification);
                Console.WriteLine("薪水=" + objEmployee._salary);
            }
        }
    }
    


    运行结果:




    2、析构函数

    析构函数(destructor)也叫拆构函数,是在对象消失之前的瞬间自动调用的函数,其形式是:

    ~构造函数名();

    (1)析构函数名在类名前加上一个”~“,与构造函数对比区别。

    (2)析构函数没有任何参数,不能被重载,但可以是虚函数,一个类只有一个析构函数。

    (3)析构函数没有返回值。


    C++实例:

    /********************************
    *    功能:构造函数与析构函数   *
    ********************************/
    
    #include<iostream>
    using namespace std;
    	class Clock{
    		private:
    			int H,M,S;
    		public:
    
    		Clock(int h=0,int m=0,int s=0)        //构造函数
    		{
    			H=h,M=m,S=s;
    			cout<<"constructor:"<<H<<":"<<M<<":"<<S<<endl;
    		}
    		~Clock()							//析构函数
    		{
    			cout<<"destructor:"<<H<<":"<<M<<":"<<S<<endl;
    		}
    
    };
    	int main()
    	{
    		Clock C3(10,0,0);
    		Clock C4(11,0,0);
    		return 0;
    	}
    	Clock C1(8,0,0);
    	Clock C2(9,0,0);


    运行结果:




           在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数。对象释放时,先执行派生类的析构函数,再执行基类的析构函数。

  • 相关阅读:
    TestNG DataProvider的几种方法写法
    ruby操作EXCEL的简单示例
    QTP的tsr对象库文件转换成XML
    Ruby对时间的处理
    java读取YAML文件
    ruby遍历文件夹
    ruby操作excel文件
    [转载]利用ruby的Net::HTTP发起http请求并对返回包进行简单的校验
    QTP连接MySQL (转载)
    Ruby 冒泡排序
  • 原文地址:https://www.cnblogs.com/saixing/p/6730361.html
Copyright © 2011-2022 走看看