新しい/名前空間を削除します

ディレクトリ

1.新しい/削除

Cの動的メモリ割り当て++

  • 新しいキーワードによるC ++動的なメモリ割り当て
  • C ++動的メモリ割り当てはの種類に基づいて行われます
  • メモリ解放のためのキーを削除します
//变量申请与释放
Type *pointer = new Type;
delete pointer;

//数组申请与释放
Type *pointer = new Type[N];
delete[] pointer;
#include <stdio.h>

int main()
{
    int *p = new int;

    *p = 5;
    *p = *p + 10;

    printf("p = %p\n", p);
    printf("*p = %d\n", *p);

    delete p;

    p = new int[5];

    for (int i = 0; i < 5; i++)
    {
        p[i] = i + 1;

        printf("p[%d] = %d\n", i, p[i]);
    }

    delete[] p;

    return 0;
}

新しいキーワードやmalloc関数の違い

  • 新しいキーワードは、C ++言語の一部であります
  • Cコンパイラはライブラリ関数を提供しない場合Cライブラリ関数mallocは、提供され、そのダイナミックメモリアロケーションできないことを意味します
  • のメモリアロケーションユニットの特定の新しいタイプで
  • mallocのバイトメモリアロケーションユニット
  • 新しいアプリケーションは、次のようなとき、単一の型変数、初期化することができるint *pi = new int(1)char *pc = new char('c')など
  • malloc関数のメモリ初期化の特性を持っていない、唯一のcalloc

2.名前空間

C言語でのみグローバルスコープ、すべて同じグローバル識別子グローバルスコープを共有し、そして識別子の間ことが可能競合。

この問題を解決するために、C ++が提案している名前空間の概念を。

  • 名前空間の異なる部分にグローバルスコープを
  • 異なる名前空間識別子は、競合することなく、同じ名前であってもよいです
  • 名前空間は、お互いの中に入れ子にすることができます
  • 知られているグローバルスコープ、デフォルトの名前空間

以下のためのC ++の名前空間の定義方法

namespace Name
{
    //......
}

以下のためのC ++の名前空間を使用しますusing namespace name;

  • 全体のネームスペースを使用します。using namespace name;
  • 名前空間の変数を使用します:using name::variablel
  • 変数のデフォルトの名前空間を使用します。::variable
#include <stdio.h>

namespace First
{
    int i = 0;
};

namespace Second
{
    int i = 1;

    namespace Internal
    {
        struct P
        {
            int x;
            int y;
        };
    }
}

int main()
{
    using namespace First;
    using Second::Internal::P;

    printf("First::i = %d\n", i);
    printf("Second::i = %d\n", Second::i);

    P p = {2, 3};

    printf("p.x = %d\n", p.x);
    printf("p.y = %d\n", p.y);

    return 0;
}

おすすめ

転載: www.cnblogs.com/songhe364826110/p/11521460.html