c++基础:构造和析构

前言:   类的定义中,不能对数据成员初始化;所以需要给对象进行初始化;(以下为简要笔记)

目录

一.什么是对象?

二.为什么要学习构造函数?

三:构造函数

1构造函数语法:

2.构造函数分类:

3.构造函数的调用:

四.析构函数

五.构造函数和析构函数顺序:


一.什么是对象?

对象就是类的实例化;

int a; a是整形变量;a是整型变量的实例化;

class student  ;student a; a 是student 类型的实例化;

 

二.为什么要学习构造函数?

那为什么需要构造函数,不直接人工初始化呢?

1手工初始化 Test t1.c(3,4),Test t2.c(3,4);

重复过多,且比较麻烦;

2定义对象数组的时候,没有机会进行显示初始化:

class Test{} ; Tset arr【100】; Test arr[100]={Test (),Test(),Test()...  }

 

三:构造函数

1构造函数语法:

函数名和类名相同;  当定义对象时,c++编译器会自动调用相应的构造函数;

 

2.构造函数分类:

1.默认构造函数:

a.默认无参数构造函数:当类没有定义构造函数时, 编译器提供一个无参数构造函数,并且函数体为空;

b.默认拷贝构造函数:当勒种没有定义拷贝构造函数时,编译器默认提供一种默认拷贝构造函数 ,进行成员变量的值赋值;

但是只要你写了构造函数,你必须要用构造函数初始化,c++不在提供默认函数进行初始化;

2.无参数构造函数

调用无参数构造函数 不用写 ()

Test t1(); Test t2;

 

3.有参数构造函数

Test t3(1);

Test  t4=2;

Test t5 =Test (3);//程序员手工构造函数;

 

4.拷贝构造函数:

 

类名 (( const)类名 & 形参)

作用:用一个对象初始化另一个对象;

应用场景:
1Test t1=t2; Test t1(t2);

2void printTest(Test t5)   ;    printTest(t1);

3返回一个元素,匿名对象时:

Test getTest_x() {Test t ;return t;} 

 

Test myt1 = getTest_x();//匿名对象初始化,另一个对象,匿名对象直接转正;

Test myt2(1);

myt2=getTest_x();//用匿名对象, 给另一个对象 赋值 匿名对象被析构;

 

 

 

3.构造函数的调用:

 

 

四.析构函数

析构函数:对象生命周期结束时,会被c++编译器自动调用;

 

五.构造函数和析构函数顺序:

先构造函数的 后被析构;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值