c++类的构造函数类型介绍及其特点

本人小白,最近刚开始学c++,正在在学习类,这里根据自己所学的,总结一下在类中很重要的一类成员函数-构造函数,有什么不对的地方或者说的不准确的地方欢迎各位指出


类的分类大概可以分为三类,即默认构造函数,一般构造函数,以及拷贝构造函数

ps:还有一种构造函数叫做无参构造函数,个人觉得默认构造函数与无参构造函数可以归为同一类

1.默认构造函数 (无参构造函数)

如果创建一个类你没有写任何构造函数,则系统会自动生成默认的构造函数,或者写了一个不带任何形参的构造函数

class A
{
  private:
    int a;
  public:
    int getI() {return i;}
}

这个类中没有写任何构造函数,因此系统会自动生成默认的构造函数,将a的值默认为0

class A
{
  private:
    int a;
  public:
    A() {a = 1;}
    int getI() {return i;}
}

有构造函数但是没有形参,这时系统就不会再自动生成这样一个默认的构造函数,如果想确定初始值,则需要自己显示地写出来

2.一般构造函数(也称重载构造函数)

一般构造函数可以有各种参数形式,一个类可以有多个一般构造函数,前提是参数的个数或者类型不同(基于c++的重载函数原理)

class A
{
  private:
    int a;
  public:
    A(int integer) {a = integer;}  // 传入一个参数Integer,并将integer的值赋给a
    int getI() {return i;}
}

3.拷贝构造函数

拷贝构造函数参数为类对象本身的引用,用于根据一个已存在的对象复制出一个新的该类的对象,一般在函数中会将已存在对象的数据成员的值复制一份到新创建的对象中。参数(对象的引用)是不可变的(const类型)。此函数经常用在函数调用时用户定义类型的值传递及返回。

A (const A & B)
{
   this->a = B.a (将类B中成员的值复制过来)
}    

拷贝构造函数相比其他两种更为复杂,我也不能说的太清楚,引用一篇大神的博客来介绍

c++拷贝构造函数详解


谢谢啦~(≧▽≦)/~啦啦啦

你可能感兴趣的:(C++)