您的位置:首页 > 编程语言 > C语言/C++

c++(9)-new与namespace

2020-02-16 17:57 225 查看

内存分配

  • C++动态内存分配 new
  • 基于类型
  • delete释放
Type * p = new Type;
...
delete p;
Type * p = new Type
;
...
delete [] p;
  • new与malloc的区别 new是C++的一部分
  • malloc是由C库提供的函数(即必须有库支持)
  • new以具体类型为单位分配内存
  • malloc以字节为单位分配内存
  • new在为变量申请内存时可初始化变量
  • malloc无法对内存初始化

命名空间

  • C语言仅有一个全局作用域 C语言中所有全局标识符共享一个作用域,导致标识符之间可能冲突
  • C++提出命名空间概念
      命名空间将全局作用域分成不同的部分
    • 不同命名空间的标识符可以同名
    • 命名空间可以嵌套
    • 全局作用域也叫默认命名空间
    namespace A
    {
    ...
    }

    用法1:

    #include <iostream>
    using namespace std;
    
    // 第一个命名空间
    namespace first_space{
    void func(){
    cout << "Inside first_space" << endl;
    }
    }
    // 第二个命名空间
    namespace second_space{
    void func(){
    cout << "Inside second_space" << endl;
    }
    }
    int main ()
    {
    
    // 调用第一个命名空间中的函数
    first_space::func();
    
    // 调用第二个命名空间中的函数
    second_space::func();
    
    return 0;
    }

    用法2:

    #include <iostream>
    using namespace std;
    
    // 第一个命名空间
    namespace first_space{
    void func(){
    cout << "Inside first_space" << endl;
    }
    }
    // 第二个命名空间
    namespace second_space{
    void func(){
    cout << "Inside second_space" << endl;
    }
    }
    using namespace first_space;
    int main ()
    {
    
    // 调用第一个命名空间中的函数
    func();
    
    return 0;
    }

    用法3:

    #include <iostream>
    using namespace std;
    
    // 第一个命名空间
    namespace first_space{
    void func(){
    cout << "Inside first_space" << endl;
    }
    // 第二个命名空间
    namespace second_space{
    void func(){
    cout << "Inside second_space" << endl;
    }
    }
    }
    using namespace first_space::second_space;
    int main ()
    {
    
    // 调用第二个命名空间中的函数
    func();
    
    return 0;
    }

     

    转载于:https://my.oschina.net/u/3472252/blog/917662

    • 点赞
    • 收藏
    • 分享
    • 文章举报
    choudan8345 发布了0 篇原创文章 · 获赞 0 · 访问量 159 私信 关注
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: