Bootstrap

C++中定义类型名的方法

什么是 C++ 中的类型别名和 using 声明?  

 类型别名与using都是为了提高代码的可读性。

有两种方法可以定义类型别名

  1. 一种是使用关键字typedef起别名
  2. 使用别名声明来定义类型的别名,即使用using.

typedef

关键字typedef作为声明语句中的基本数据类型的一部分出现。含有typedef的声明语句定义的不再是变量而是类型别名。和以前的声明语句一样,这里的声明符也可以包含类型修饰,从而也能由基本数据类型构造出复合类型来。

类型别名允许我们为已存在的类型创建一个新的名称。这在处理复杂的类型表达式时特别有用,可以使代码更清晰、更易于理解。

typedef的用法包括:定义一种类型的别名;用于struct声明;用来定义与平台无关的类型;用于回调函数;为复杂的声明定义一个新的简单的别名。

typedef是定义了一种类型的新别名,不同于宏,并不是简单的字符串替换。

过度使用:虽然类型别名可以提高代码的可读性,但过度使用可能会导致代码混乱,特别是当别名含义不明确时

// 使用typedef进行类型别名定义
typedef int Integer;
Integer a = 10; // 等价于 int a = 10;

using

C++11中用关键字using作为别名声明的开始,其后紧跟别名和等号,其作用是把等号左侧的名字规定成等号右侧类型的别名。

using声明不仅用于类型别名,还可以用来引入命名空间中的标识符,或者明确指定类成员的访问方式。

using int Interger
Interger b=20//int b=20

使用typedef定义的别名和使用using定义的别名在语义上是等效的。 唯一的区别是typedef在模板中有一定的局限性,而using没有。

注意事项:

  • 具体引入:尽量使用using std::cout;这样的具体引入,而不是using namespace std;
  • 局部作用域:如果必须使用using namespace,将其限制在局部作用域内。

using namespace std;

#include<iostream>
using namespace std;
int main(){
    int a;
    cin>>a;
    cout<<a;
}
#include<iostream>
int main(){
    int a;
    std::cin>>a;
    std::cout<<a;
}

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;