类:构造函数和析构函数

一.类

类定义的变量就是对象

1.构造函数
(只有)创建对象的时候系统自动调用的函数(初始化对象)

(1)构造函数名与类名相同
(2)构造函数没有返回值
(3)构造函数可以重载

注意:关于构造函数

(1)如果构造函数被调用了,则一定有一个新对象被创建了

(2)如果有一个新对象被创建,则一定有一个构造函数被调用了

如果类中一个构造函数都没有(注意是一个都没有),系统会自动添加一个无参构造函数,给函数什么都不做。

对构造函数的赋值方式:

(1)使用括号进行赋值

 Test t1(10,20);

(2)等号法赋值

 Test t2 = Test(3,4);

或者:

Test t4 = 10;  // 等价于  Test t4 = Test(10);

该方式只能调用单个参数的构造函数

2.析构函数

类被释放的时候,系统会调用对象的析构函数

(1)析构函数函数名: ~ 类名
(2)析构函数没有返回值
(3)析构函数没有参数(不能重载==>析构函数只能有一个)

如果类中没有析构函数,系统会自动添加一个析构函数。

构造函数和析构函数的调用顺序:先构造的对象后析构

3.拷贝构造

(1)书写形式

类型 (const 类名 &变量名 )

Test(const Test &obj)// 拷贝构造函数  赋值构造函数

(2)调用方式

①函数参数是对象的时候,实参到形参的传递会调用拷贝构造 ==>建议使用引用

②对象作为返回值的时候,也会调用拷贝构造函数 ==>不同编译器对函数的返回值处理方式可能不同

注意

浅拷贝 :当类中没有拷贝构造的时候,系统会自动添加一个拷贝构造函数,进行“值” 的复制
深拷贝:复制的时候连同堆上的空间一起复制 ===>自己写

当成员变量存在指针的时候,要进行深拷贝

4.对象初始化列表

在构造函数后面加 : 初始化成员 各个成员之间用逗号隔开

这种方式可以对 const 常量进行赋值

Test(int a, int b) :m_a(a) ,m_b(b)

(1)对象初始化列表的执行要优先于 构造函数

(2)对象初始化顺序与对象在初始化列表中所在的位置无关,和在类中的变量顺序有关

5.new 和 delete

new :创建会自动调用构造函数

delete :释放对象的时候会自动调用析构函数

6.类中的static 用法

(1)类中的静态成员变量,该属性不属于不属于某个成员,是类的属性,是所有成员所共有的

(2)静态变量必须要在类的外部进行初始化

int Test::m_sa = 10;

(3)静态成员(变量,函数)使用方式:

①通过变量使用

Test t;
cout << t.m_sa << endl;

Test::m_sa = 20;
cout << t.m_sa << endl;

②通过类名使用

Test::show();

(4)静态成员函数:只能使用静态的成员变量

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值