RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
初识C++中的Class类(二)。-创新互联

类的6个默认成员函数

成都创新互联公司主营梅列网站建设的网络公司,主营网站建设方案,手机APP定制开发,梅列h5成都小程序开发搭建,梅列网站营销推广欢迎梅列等地区企业咨询

构造函数:

拷贝构造函数:

赋值操作符重载:

析构函数:

取地址操作符重载:

const取地址操作符重载:


类的6个默认成员函数 构造函数:

  重写的常见形式:

class class_name{
public:
    class_name() {}                     //无参默认构造函数
    class_name(int a=1,int b=1,int c=1) //有参构造函数(当参数都有缺省值时,
    {                                   //            也称为默认构造函数)
    m_a=a
    m_b=b;
    m_c=c
    }

//      构造函数重载     
    class_name(int a,int b,int c){      //有参构造函数(给成员数据赋值)
    m_a=a;
    m_b=b;
    m_c=c
    }
    class_name(int a,int b,int c):      //有参构造函数(使用参数列表初始化成员数据)
    m_a=a,
    m_b=b,
    m_c=c
    {}
}
private:
int m_a;
int m_b;
int m_c;
}

  功能:主要完成初始化工作。

  特征:

              1、与类名相同;

     2、无返回值;

              3、实例化对象时,会被自动调用

     4、可重载

注意:

  1、调用无参构造函数时,切记不要带();

  2、构造函数的参数都有缺省值时,称为默认构造函数;

  3、当重写构造函数时,默认构造函数同一时刻只能存在一个;

拷贝构造函数:

功能:使用同类对象初始化创建对象

  重写的常见形式:

class class_name{
public:
    class_name(const class_name &d) //const保护对象d不被修改
    {
        m_a=d.n_a;                  //值拷贝(浅拷贝)
        m_b=d.n_b;
        m_c=d.n_c;
    }     
private:
int m_a;
int m_b;
int m_c;
}

特征:

              1、是构造函数的一个重载形式;

     2、参数只有一个且必须使用引用调用,使用传值方式会引发无穷递归;

              3、若未显示定义,系统会默认生成。

注意:

  1、必须要是以引用的方式进行传参,否则会导致无限递归;

  2、以对象初始化对象时,都会调用拷贝构造函数,如下为三种常见的举例;

class_name  t1=t;
class_name  fun(class_name x)  //当使用fun函数时,x会被拷贝构造
return tmp;                    //在函数返回时(tmp为临时对象)

  3、默认拷贝函数按照成员数据拷贝,值拷贝(浅拷贝)。

赋值操作符重载:

  功能:主要是把一个对象赋值给另一个对象。

  重写的常见形式:

class class_name{
public:
    class_name & operator=(const class_name & t)
    {
        if(this!=&t)              //判断是不是自己给自己赋值
        {
            m_a=t.m_a;            //浅赋值
        }
        return *this;
    } 
private:
int m_a;
}

  注意:

  1、引用返回:提高效率,少一次拷贝构造;

  2、有返回值:为了实现连续赋值;

  3、参数引用:提高效率,少一次拷贝构造;

  4、参数设置为常:保护=右边的对象不会被修改,安全性。

析构函数:

  功能:主要完成清理工作。

  常见形式:

~class_name()
{}

  特征:

  1、函数名是在类名前加~;

  2、无参数、无返回值;

  3、一个类有且只有一个析构函数,若未显式定义,则系统自动生成默认析构函数;

  4、对象生命周期结束时,C++编译系统会自动调用析构函数。

  注意:

  1、对象的析构,按照构造的相反顺序,(栈储存)。

取地址操作符重载: const取地址操作符重载:

  这两个运算符一般不需要重载,使用编译器生成的默认取地址的重载即可,只有特殊情况,才需要重载,如想让别人获取到指定的内容。

  补充:

  当类中含有指针变量,则一定要重写,前四大默认函数,拷贝构造函数与赋值符号的重载,且为深拷贝与深赋值。

     围绕指针类型

  1、常对象不能调用普通方法;

  2、普通对象可以调用常方法;

  3、常方法不能调用普通方法;

  4、普通方法可以调用常方法;

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


名称栏目:初识C++中的Class类(二)。-创新互联
网页地址:http://lswzjz.com/article/phhhs.html