zoukankan      html  css  js  c++  java
  • c++中对象的构造和销毁

    对象的初始化 如下

    ckasss Person
    {
     public:
             char name[20];
             char sex;
             int age;     
    
    };
    
    Person   p={"cheng"'f' ,20};     //对象初始化

    构造数组对象时,需要一个没有参数的构造函数,进行对象初始化。

    如果定义了一个对象,而忘记了初始化,对象里面的内容都是未知的,进而造成错误,

    而类里面有一个自动初始化对象,通过构造函数去初始化对象。

    构造函数

    (1)构造函数是成员函数,函数体可写在类体内,也可以写在类体外

    (2)构造函数时特殊函数,该函数的名字与类名字相同,不指定返回值类型。

    (3)构造函数可以重载,即可以定义多个参数个数不同的构造函数

    (4)在创建对象时,系统自动调用构造函数。

    形式如下

    ckass Person
    {
       public:
        
       Perosn()      //内部创建
    { 
         int i;
      return ;
    }
    };
    
    外部创建
    Person :: Person()
    {
       int i;
       return;
    }

    析构函数

    对象同样需要恰当的被销毁,c++提供了析构函数,

    在对象销毁时自动调用,(并且析构函数不带参数)

    一个类只能定义一个析构函数,即析构函数不允许重载,

    一般的,将析构函数定义为公有成员函数,

    在类体内定义析构函数的一般格式是:

    ~classname()

    {

           ....

    }

    在类体外定义析构函数的一般格式是:

    classname :: ~classname()

       ....

    1.当对象是系统自动创建的,则在对象的作用域结束时,系统自动调用析构函数。

    2.当一个对象是使用new运算符被动态创建的,在使用delete运算符释放它时,delete将会自动调用析构函数。 

    1、全局对象,程序一开始,其构造函数就先被执行(比程序进入点更早);程序即将结束前其析构函数将被执行。

    2、局部对象,当对象生成时,其构造函数被执行;当程序流程将离开该对象的声明周期时,其析构函数被执行。

    3 、静态(static)对象,当对象生成时其构造函数被执行;当程序将结束时其析构函数才被执行,但比全局对象的析构函数早一步执行。

    4、以new方式产生出来的局部对象,当对象生成时其构造函数被执行,析构函数则在对象被delete时执行时执行

  • 相关阅读:
    整数反转
    最长公共前缀
    罗马数字转整数
    单点登录
    VMware Workstation虚拟机密钥
    Pytest 用例内部执行顺序
    判断是不是回文数
    python端口IP字符串是否合法
    python求二叉树深度
    有两个字符串类型的数字,实现一个方法将它们进行相加,并返回相加后的数值。
  • 原文地址:https://www.cnblogs.com/tanshengjiang/p/11820378.html
Copyright © 2011-2022 走看看