C++构造函数的调用

  • 对象特性

  • 构造函数和析构函数

构造函数

  • 没有回值也不写void

  • 函数值和类名相同

  • 构造函数可以有参数,因此可以发生重载

  • 程序在调用对象的时候自动调用构造,无须手动调用,只能调用一次

析构函数语法

  • 析构函数,没有返回值也不写void

  • 函数名和类名也相同,在名称前加上符号~

  • 析构函数不可以有参数,因此不可以发生重载

  • 程序在对象销毁前会自动调用析构,无须手动调用,而且只能化调用一次

构造函数的分类及其调用

  • 按参数分为:有参构造和无参构造

  • 按类型分为:普通构造和拷贝构造

  • class person
    {
      public:
    //拷贝构造函数
    person(const person &p)//拷贝的函数不能更改值,也就是在里面在传入一个值
    {
    m_age=p.age;
    }
    int m_age;
    };


- 三种调用的方式

- 括号法

- ~~~
int main()
{
  person p1;//默认构造函数的调用,注意不要加()因为系统会认为是声明
  person p2(10);//有参构造函数
  person p3(p2);//拷贝构造函数
}

  • 显示法

  • person p1;

  • person P2=person (10);//有参构造

  • person p3=person(p2);//拷贝构造

  • person(10);//这是匿名对象,特点当前执行结束后,系统会立即回收匿名对象。

  • person(p3);//注意不要利用拷贝构造函数初始化匿名对象,编译器会认为 person(p3)==person p3;系统认为是声明 ~~~

  • 隐式转换法

  • person p4=10;//相当于写了person p4=person(10);也就是显示法
    person p5=p4;//拷贝构造。


 拷贝构造的调用顺序

- 来初始化一个新的对象时。

- 值传递的会复制一份内存。故在调用默认构造时也调用了拷贝构造。

- 值传递返回局部变量时也会调用一次默认函数和拷贝构造。

 构造函数的调用

- 用户定义有参构造函数,c++不提供默认无参构造。但调用拷贝构造


- 如果用户定义拷贝构造函数,c++不会提供其他的构造函数


- 如果没有调用函数,系统会自动提供。例如:拷贝构造,系统会进行赋值操作。

你可能感兴趣的:(c++,java,开发语言)