C++分析——常用技巧(一)

本文探讨了C++中的类构造函数和析构函数,包括初始化、重载及析构的注意事项。接着介绍了复制构造函数的工作原理和使用方法,以及如何通过成员函数调用带参数的构造函数。此外,文章还详细讲解了类的重载机制,如方法重载和运算符重载,并提供了实例代码展示。最后,简述了C++的内联函数及其应用。
摘要由CSDN通过智能技术生成

C++ 类的构造函数和析构函数

类的析构函数可以用来做简单的初始化数据,比如为变量赋值,指针赋NULL,数组和结构体清零等初始化操作。也可以对成员函数进行逗号初始化赋值,构造函数可以进行重载,但析构函数不能。以指针的形式初始化的类在函数结尾要delete指针才能调用到析构函数,而已结构体的形式初始化的类在其作用域结束后自动释放内存,调用析构函数。
测试使用的类

class Module_CPP
{
public:
        Module_CPP():m_module_a(3),m_module_b(5),pm_module(NULL){};
        Module_CPP(int number);
        Module_CPP(int a,int b);
Module_CPP(const Module_CPP & x);
        ~Module_CPP();
        void Init();

private:    
        int m_module_a;
        int m_module_b;
        char *pm_module;
};

构造函数可以使用传统函数的形式进行对成员函数的赋值,也可以收冒号的形式进行快速赋值。

测试代码:

Module_CPP::Module_CPP(int number)
{
        m_module_a = number;
        m_module_b = number * 2;
}

Module_CPP::Module_CPP(int a,int b):m_module_a(a),m_module_b(b),pm_module(NULL)
{

}

Module_CPP::Module_CPP(const Module_CPP & x):m_module_a(x.m_module_b),m_module_b(x.m_module_a)
{
        cout << "copy constructor."<<endl;
}

Module_CPP::~Module_CPP()
{
        m_module_a = 0;
        m_module_b = 0;
        pm_module = NULL;

cout << "APP exit" << endl

}

void Module_CPP::Init()
{
        cout << "m_module_a is " << m_module_a << endl;
        cout << "m_module_b is " << m_module_b << endl;
}

类的初始化与重载

测试方法

    Module_CPP *pModule_1 = new Module_CPP();
    Module_CPP *pModule_2 = new Module_CPP(4);
    Module_CPP Module_1 = Module_CPP(5);

    pModule_1->Init();
    pModule_2->Init();  
    Module_1.Init();

执行结果

$ ./project.o 
m_module_a is 3
m_module_b is 5
m_module_a is 4
m_module_b is 8
m_module_a is 5
m_module_b is 10
APP exit
$

指针的形式申请的类需要在使用结束时释放内存

    Module_CPP *pModule_1 = new Module_CPP();
    Module_CPP *pModule_2 = new Module_CPP(4);
    Module_CPP Module_1 = Module_CPP(5);

    pModule_1->Init();
    pModule_2->Init();  
    Module_1.Init();

    delete pModule_1;
    delete pModule_2;
    pModule_1 = NULL;
    pModule_2 = NULL;

执行结果

$ ./project.o 
m_module_a is 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值