C++构造函数、析构函数、this指针、初始化列表

本文详细介绍了C++中的构造函数,包括其作用和种类,接着讨论了析构函数,阐述了其在对象消亡时自动调用的重要性。此外,还详细讲解了this指针的概念,展示了如何在类的成员函数中使用this访问对象成员。最后,文章解释了初始化列表的使用场景和必要性,强调了在特定情况下必须使用初始化列表的情况。
摘要由CSDN通过智能技术生成

构造函数

一、 构造函数是干什么的

构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。

构造函数的几个特点:

   1.函数名和类名必须一样,没有返回值。

   2.当没有显式的定义构造函数时,系统会自己生成默认的构造函数。

   3.构造函数可以重载。
class Stack
{
   
public:
         // 构造函数类名为Stack
         // 特点:以类名作为函数名,无返回类型
         Stack()
         {
   
                value = 0;
         }
private:
          // 数据成员
         int value;
}

当类的对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数->由构造函数完成成员的初始化工作
创建类: Stack c1;
编译系统为对象c1的每个数据成员(value)分配内存空间,并调用构造函数Stack( )自动地初始化对象c1的value值设置为0
故:
构造函数的作用:初始化对象的数据成员。

二、 构造函数的种类
class Complex 
{
            
private :
        double    m_real;
        double    m_imag;
public:
        //    无参数构造函数
        // 如果创建一个类你没有写任何构造函数,则系统会自动生成默认的无参构造函数,函数为空,什么都不做
        // 只要你写了一个下面的某一种构造函数,系统就不会再自动生成这样一个默认的构造函数,如果希望有一个这样的无参构造函数,则需要自己显示地写出来
        Complex(void)
        {
   
             m_real = 0.0;
             m_imag = 0.0;
        }   
        //    一般构造函数(也称重载构造函数)
        // 一般构造函数可以有各种参数形式,一个类可以有多个一般构造函数,前提是参数的个数或者类型不同(基于c++的重载函数原理)
        // 例如:你还可以写一个 Complex( int num)的构造函数出来
        // 创建对象时根据传入的参数不同调用不同的构造函数
        Complex(double real, double imag)
        {
   
             m_real = real;
             m_imag = imag;         
         }  
        //    复制构造函数(也称为拷贝构造函数)
        //    复制构造函数参数为类对象本身的引用,用于根据一个已存在的对象复制出一个新的该类的对象,一般在函数中会将已存在对象的数据成员的值复制一份到新创建的对象中
        //    若没有显示的写复制构造函数,则系统会默认创建一个复制构造函数,但当类中有指针成员时,由系统默认创建该复制构造函数会存在风险,具体原因请查询 有关 “浅拷贝” 、“深拷贝”的文章论述
        Complex(const Complex & c)
        {
   
                // 将对象c中的数据成员值复制过来
                m_real = c.m_real;
                m_imag    = c.m_imag;
        }            
        // 类型转换构造函数,根据一个指定的类型的对象创建一个本类的对象,
     //需要注意的一点是,这个其实就是一般的构造函数,但是对于出现这种单参数的构造函数,C++会默认将参数对应的类型转换为该类类型,有时候这种隐私的转换是我们所不想要的,所以需要使用explicit来限制这种转换。
       // 例如:下面将根据一个double类型的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值