随笔 - 272  文章 - 0  评论 - 283  阅读 - 142万

动态分配const对象(C++)

创建

C++中,允许动态创建const对象,格式如下:

const int *p = new const int(128);

与其他常量一样,动态创建的const对象必须在创建时初始化,并且初始化后,其值不能改变。

删除

尽管不能改变const对象的值,但可以删除动态创建的const对象,格式如下:

delete p;

这个和普通的对象一样,可以对其进行删除操作。

应用场景举例

1、加载配置文件

从配置文件读入的数据可以用来初始化const对象,供后续程序使用。

伪代码如下:

int num;

... //读取配置文件,并将配置数据填充到num

const int *pNum = new const int(num); // num初始化const对象

cout<<*pNum<<endl; //使用const对象

...

delete pNum;

2、创建数组

当数组的大小依赖于某些动态因素时(比如配置文件等),可以考虑用const对象。

伪代码如下:

int num;

... //获取num的值

const int *pNum = new const int(num); // num初始化const对象

unsigned char _data[*pNum]; //创建数组

...

delete pNum

示例代码如下:

复制代码
#include <iostream>

using namespace std;

int main()
{
    int num;
    cin>>num;
    const int *pNum = new const int(num);
    int arr[*pNum];
    for(int i=0;i<*pNum;++i) arr[i] = i;
    for(int i=0;i<*pNum;++i) cout<<arr[i]<<" ";
    cout<<endl;
    return 0;
}
复制代码

当然还有很多其它场景,我暂时想到了这些,这里记录下来,方便以后查阅。

posted on   Mike_Zhang  阅读(1080)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2012年10月 >
30 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3
4 5 6 7 8 9 10

点击右上角即可分享
微信分享提示