c++学习笔记6

c++的动态内存(堆)分配

c语言中依赖库函数malloc进行动态内存分配,而c++中则自带了new/delete关键字

  • new/delete最大的特点是以类型为单位分配内存,并且分配单个变量时(数组不行)可进行初始化。唯一要注意的就是整个数组的delete要添加[]
int* p = new int;
delete p;

float* pf = new float(2.0f);//分配单个变量时可进行初始化
delete pf;

p = new int[10];
delete[] p;//尤其注意,整个数组的释放要添加[]

struct mystruct
{
int a;
char b;
}
mystruct *pMySrt=new mystruct;
delete pMySrt;
  • new最大的优点是,可以new对象,并自动进行初始化。而malloc就做不到这一点,malloc仅仅能申请到内存而已,并不能赋予其对象的特性。这也是为什么c++要引入new的原因
class Test
{
public:
    Test()
    { }
};
Test* pn = new Test;//new一个对象的时候,会自动触发构造函数
Test* pm = (Test*)malloc(sizeof(Test));//malloc仅仅能申请内存,而不能赋予其对象的特性  
delete pn;

c++的命名空间

所谓的命名空间,就是为全局变量增加一个标识,用于解决重名问题。全局变量的作用域不会改变

  • 其实不同命名空间里的同名变量,本质是两个不同的变量
namespace First
{
    int i = 0;
}

namespace Second
{
    int i = 1;
    namespace Internal
    {
        struct P
        {
            int x;
            int y;
        };
    }
}

void func(void)
{
    using namespace First; //使用整个命名空间
    using Second::Internal::P; 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值