C++(构造函数的分类和调用)

构造函数的分类和调用

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

  • 三种调用方式
    1.括号法
    2.显示法
    3.隐式转换法

示例:

//1、构造函数分类
// 按照参数分类分为 有参和无参构造   无参又称为默认构造函数
// 按照类型分类分为 普通构造和拷贝构造

#include <iostream>
using namespace std;

class Person
{
public:
      //无参(默认)构造函数
      Person()
      {
            cout<<"无参构造函数!"<<endl;
      }

      //有参构造函数
      Person(int a)
      {
            age=a;
            cout<<"有参构造函数!"<<endl;
      }

      //拷贝构造函数
      Person(const Person &p)
      {
            age=p.age;
            cout<<"拷贝构造函数"<<endl;
      }

      //析构函数
      ~Person()
      {
            cout<<"析构函数"<<endl;
      }
public:
      int age;
};

//2.构造函数调用
//调用无参构造函数

void test01()
{
      Person p; //调用无参构造函数
}

//调用有参构造函数
void test02()
{
      //2.1 括号法,常用
      Person P1(10); 
      //注意1:调用无参构造函数不能加括号,如果加了编译器认为这是一个函数声明
      //Person p2();

      //2.2 显示法
      Person p2=person(10);
      Person p3=Person(p2);
      //Person(10) 单独写就是匿名对象 当前行结束之后,马上析构
      
      //2.3隐式转换法
      Person p4=10; //Person p4=Person(10);
      Person p5=p4; //Person p5=Person(p4);

      //注意2:不能利用拷贝构造函数 初始化匿名对象 编译器认为是对象声明
      //Person p5(p4);
}

int main(void)
{
      test01();
      //test02();

      system("pause");

      return 0;
}

原文地址:https://www.cnblogs.com/xuelanga000/p/13605239.html