C++ 封装(二)

四、构造函数

构造函数是一种特殊的方法,用于在创建对象时初始化对象的属性。在封装中,构造函数可以被用来封装对象的属性和方法,并确保对象在被创建时都被正确初始化。通过构造函数,我们可以控制对象的创建过程,隐藏对象的内部细节,以及提供统一的接口来访问对象的属性和方法。这样可以有效地实现封装,提高代码的可维护性和可复用性。

作用:在创建对象的时候初始化对象(给成员变量进行初始化)

构造函数规则:

1、函数名与类名相同,大小写也要一致

2、没有返回值类型,连void都没有

3、没有具体的返回值(不能由return返回结果数据)

4、如果没有写构造函数,系统会提供默认构造函数

代码示例:

#include <iostream>
#include <string>
using namespace std;

class Employee{
    private:
        string name;
        int number;
    public:
        Employee()//初始化无赋值
        {
            name = "";
            number = 0;
        }
        // Employee(string name,int number)//可以对成员变量进行初始化赋值
        // {
        //     this->name = name;
        //     this->number = number;
        // }
        Employee(string name,int number):name(name),number(number){}//初始化列表
        Employee(string name):name(name),number(number){}
        string getName()
        {
            return name;
        }
        void setName(string name)
        {
            this->name = name;
        }
        int getNumber()
        {
            return number;
        }
        void setNumber(int number)
        {
            this->number = number;
        }
};

int main()
{
    Employee emp1{};//emp1()系统会判断生成emp1()函数,而不是调用类
    Employee emp2("gaoyinjie",1);
    Employee emp3("list");
    cout<<"员工emp1的信息:"<<emp1.getName()<<","<<emp1.getNumber()<<endl;
    cout<<"员工emp2的信息:"<<emp2.getName()<<","<<emp2.getNumber()<<endl;
    cout<<"员工emp3的信息:"<<emp3.getName()<<","<<emp3.getNumber()<<endl;
}

运行结果:

员工emp1的信息:,0
员工emp2的信息:gaoyinjie,1
员工emp3的信息:list,3  

五、析构函数

析构函数是在对象被销毁时自动调用的特殊成员函数,用于清理对象所分配的资源,例如释放动态分配的内存、关闭文件、释放网络连接等。析构函数的名称与类名相同,前面加上波浪号(~),没有参数和返回值。当对象超出作用域、被删除或者程序结束时,析构函数会被自动调用。析构函数的作用是确保对象的资源被正确释放,避免内存泄漏和资源泄漏问题。

代码示例:

#include <iostream>
#include <string>

using namespace std;

class Object{
public:
    Object()
    {
        cout<<"Object::Object()"<<endl;
    }

    ~Object()
    {
        cout<<"~Object::~Object()"<<endl;
    }
};

int main()
{
    // Object *pObj = new Object();
    // delete pObj;
    Object *pObjs = new Object[5];//此时只会调用无参的构造函数
    delete []pObjs;
    return 0;
}

运行结果:

Object::Object()
Object::Object()
Object::Object()
Object::Object()
Object::Object()
~Object::~Object()
~Object::~Object()
~Object::~Object()
~Object::~Object()
~Object::~Object()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值