美文网首页
7.构造函数的分类及调用

7.构造函数的分类及调用

作者: lxr_ | 来源:发表于2021-01-29 20:00 被阅读0次
#include<iostream>
using namespace std;

//***两种分类方式:
//1.按参数分为:有参构造和无参构造
//2.普通构造和拷贝构造

class person
{
public:
    int age;
    person()
    {
        cout << "person无参构造函数的调用" << endl;
    }
    person(int a)
    {
        age = a;
        cout << "person有参构造函数的调用" << endl;
    }
    //拷贝构造函数
    person(const person& p)
    {
        //将传入的参数的所有属性拷贝到我身上
        age = p.age;
        cout << "person拷贝构造函数的调用" << endl;
    }
    ~person()
    {
        cout << "person析构函数的调用" << endl;
    }
};
void test02()
{
    //三种调用方式:
    //1.****括号法***;
    //person p1;//默认构造函数调用,不用写括号
    //person p2(10);//有参构造函数
    //person p3(p2);//拷贝构造

    //cout << "p2年龄:" << p2.age << endl;
    //cout << "p3年龄:" << p3.age << endl;

    //person p1();//********编译器会认为这是一个函数的声明,不会创建对象*******

    //2.显式法;

    //person p1;
    //person p2 = person(10);//有参构造
    //person p3 = person(p2);//拷贝构造

    //person(10);//匿名对象,当前行执行后,系统会立即回收掉匿名对象
    //cout << "此处还没有打印,匿名对象已回收" << endl;

    //***不要利用拷贝构造函数初始化匿名对象***,编译器会认为person (p3)==person p3;编译器会认为这是对象的声明,会重定义
    /*person(p3);*/

    //3.隐式转换法
    person p4 = 10;//相当于person p4=person(10);有参构造的调用
    person p5 = p4;//拷贝构造

}
int main()
{
    test02();
    system("pause");
    return 0;
}

相关文章

网友评论

      本文标题:7.构造函数的分类及调用

      本文链接:https://www.haomeiwen.com/subject/eedctltx.html