c++入门篇八

构造函数的调用规则:

系统会提供三个函数,一个是默认的构造函数(无参,函数体为空),一个是拷贝构造函数(无参,函数体为空),一个是析构函数,对类中非静态成员属性简单值拷贝\
如果用户定义了拷贝构造函数,C++不会再提供任何默认拷贝函数
当我们提供了有参的构造函数之后,系统就不会给默认提供构造函数了

class  Person {
public:
    Person(int  a) {
    }

    //下面这个是拷贝的构造函数
    //Person(const Person&  m) {
    //}
};


void  test01() {
    Person  p1(1);//这个是没有问题的,默认会使用有参的构造函数
    //Person  p2;//这是不可以的,当我们定义了有参的构造函数之后,系统就不会再提供默认的构造函数了
     
    Person p2(p1);//系统会提供拷贝的构造函数

}

初始化列表的基本声明:

//初始化列表的基本使用

class  Person {

public:


    /*
        //无参的构造函数
    Person() :m_a(2), m_b(3), m_c(4) {
        //后面相当于是赋值操作,m_a=a,m_b=b,m_c=c
        cout << "a=" << m_a << "b=" <<m_b << "c" << m_c << endl;
    }
    */


    //有参的构造函数
    //利用初始化列表,初始化数据
    //构造函数后面+:属性(参数),属性(参数)...
    Person(int a,int  b,int c):m_a(a),m_b(b),m_c(c){

    }
    int  m_a;
    int  m_b;
    int  m_c;
};

void  test() {
   Person p1;//调用的是无参数的构造函数 Person p2(
10, 3, 4);//调用的是由参数的构造函数 } int main() { test(); }

猜你喜欢

转载自www.cnblogs.com/yunxintryyoubest/p/10683066.html