C++小Tips--持续update~

本文分享了关于C++的一些实用技巧,包括动态空间分配失败的判断、动态数组的正确传递方式、继承的使用、返回类型调整以方便异常处理、引用与非引用形参的区别、错误排查、随机浮点数生成、字符串转整型、箭头与点操作符的运用、内存释放问题及解决方案、`printf`的返回值理解、`&&`运算符的逻辑特性、对`map`按value排序的方法以及字符串处理和类型转换等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 动态空间分配失败的判断
可以调用set_new_handler,它是声明于<new>的一个标准程序库函数,它的参数是个new_handler指针,指向operator new无法分配足够内存时该被调用的函数,返回值也是个指针,指向它被调用前正在执行的那个new-handler函数。参考《Effective C++》中文第三版,P240-241

#include <iostream>
#include <new>
using namespace std;
//当operator new无法分配足够内存时被调用的函数
void noMemory()
{
cout<<"no adequate memory left"<<endl;
//退出程序,若无abort则直到成功分配内存为止
abort();
}
int main()
{
set_new_handler(noMemory);
int *nums = new int[10000000000];
}

2. 动态数组通过传参获得而非直接返回
int *turnArray()

{
    int *nums;
    //code here...
    return nums;
}
若以这种返回方式获得数组容易出现无法读出等诡异问题,改为引用方式获取比较保险
void turnArray(int *&nums)
{
    //code here...
}

3. 继承
对于在多个类中都会被使用的参数或调用的函数函数可将它们写在一个基类中,其它类继承这个基类
class basico
{
    public:
    int n;
    bool inputNums(int *&);
    void outputNums(int *,int);
};
class abcd:public basico
{
    //......
};
class efgh:public basico
{

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值