C++基础 namespace register bool

1. namespace

(1)命令空间

  C中的命名空间

      在C中只有一个全局作用域

      C语言中所有全局标识符共享同一个作用域

      标识符之间可能发生冲突

  C++中提出了命名空间的概念

      命令空间将全局作用域分成不同的部分

      不同命令空间中的标识符可以同名而不会发生冲突

      命令空间也可以互相嵌套

      全局作用域也叫默认命令空间。

(2)C++命名空间的定义:

    namespace name {....}

(3)C++命令空间的使用:

       使用整个命令空间:using namespace name;

       使用命令空间中的变量:using name::variable;

       使用默认命令空间中的变量:::variable

       默认情况下可以直接使用默认命令空间中的所有标识符。

(4)C++命令空间编程实践

namespace NameSpaceA
{
    int a = 0;
}

namespace NameSpaceB
{
    int a = 1;

    namespace NameSpaceC
    {
        struct Teacher
        {
            char name[10];
            int age;
        };
    }
}

int main()
{
    using namespace NameSpaceA;
    using NameSpaceB::NameSpaceC::Teacher;

    printf("a = %d\n", a);
    printf("a = %d\n", NameSpaceB::a);

NameSpaceB::NameSpaceC::Teacher t2
    Teacher t1 = {"aaa", 3};

    printf("t1.name = %s\n", t1.name);
    printf("t1.age = %d\n", t1.age);

    system("pause");
    return 0;
}

(5)结论

    (a)namespace是设置符号的作用域,所以函数,变量,类型定义都可以放在里面。

    (b)namespace的定义:namespace name {....},并可以嵌套定义。

    (c)namespace的使用:

                    导入整个 namespace,  using namespace name;

                    导入namespace中的一个符号, using name::value;

                    单词使用namespace中的一个符号, name::value

2. register 

  (1)register的作用

    请求编译器让变量直接放到寄存器中,速度快。

  (2)C中 的register

    无法取地址

  (3)C++中的register

   可以取地址,若取地址,变量实际存放于内存,即register声明无效。

3. bool

  (1)bool类型的特点

  取值只有 true 和 false。

  true,用 1 表示,false 用 0 表示。

  (2)bool类型占用内存

  理论bool只用一个字节,如果多个bool变量定义在一起,可能会个占用一个bit,这取决于编译器实现。

  (3)对bool变量赋值

  赋值非0,转换为 true,赋值0,转换为false。

猜你喜欢

转载自www.cnblogs.com/yangxinrui/p/9782332.html
今日推荐