C++面向对象三大特性(一)——封装

本文介绍了C++中对象的概念,强调了封装的意义,通过类定义将属性和行为结合。同时,讨论了访问权限的三种类型:public、protected和private,并解释了私有成员的控制作用。接着,阐述了构造函数和析构函数在对象生命周期中的角色,特别是深浅拷贝问题及其解决方案。最后,提到了成员变量和函数的存储方式,包括静态成员的特点。
摘要由CSDN通过智能技术生成

在c++里面一切事物均为对象,对象上有属性和行为。

1)封装的意义

class A
{
    int a = 2;             //属性(成员变量、成员属性)
    int multiNumber(int a) //行为(成员函数、成员方法)
        {
            return 2a;
        }
}

将属性和行为作为一个整体,表现生活中的事物。

2)访问权限

将属性和行为加以权限控制。

公共权限public类内类外可以访问
保护权限protected内类可以访问、类外不能访问
私有权限private内类可以访问、类外不能访问

protected权限和private权限在继承的时候体现区别。使用public继承时可以通过子类访问父类protected作用域下的成员。

将成员设为私有权限的作用:

可以自己控制读写权限、检测数据的有效性。

3)构造函数和析构函数

构造函数:实例化类(初始化对象)

析构函数:对象销毁前系统自动调用,执行清理工作(例:释放堆取数据)

深浅拷贝问题:

c++默认提供的拷贝构造函数为浅拷贝,即拷贝属性所在的内存空间。

当类有指针属性时需要考虑深拷贝的问题,对于指针数据,浅拷贝只是拷贝了指针指向的内存空间,这样会带来堆取数据重复释放的问题。例如 Person b = a,当a析构完毕之后,a产生的堆区空间被释放掉,那么在b中对应的堆取数据也被释放掉,这时候再去操作b对象,就会出现访问野指针或者重复释放兑取数据的问题。

解决方法:不适用默认拷贝构造函数,重写拷贝构造函数,对于堆区数据,需重新开辟空间加以拷贝。

4)成员变量和成员函数分开储存

非静态成员变量占用对象空间

静态成员变量不占用对象空间(静态成员变量内类声明,类外必须初始化)

函数不占用对象空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值