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++不会提供其他的构造函数


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值