目录
C++ 别名是在编程中用于为类型、命名空间或函数定义别名的一种方式。常见方式比如引用、宏定义、typedef。下面说说这几种方式。
using
// C++11
using counter = long;
// C++03 equivalent:
// typedef long counter;
// C++11
using func = void(*)(int);
// C++03 equivalent:
// typedef void (*func)(int);
// func can be assigned to a function pointer value
void actual_function(int arg) { /* some code */ }
func fptr = &actual_function;
命名空间别名
namespace ns1 {
class MyClass {};
}
namespace ns2 {
using MyClass = ns1::MyClass;
MyClass obj; // 等价于 ns1::MyClass obj;
}
typedef
typedef
机制的限制在于它无法使用模板。 但是,C++11 中的类型别名语法支持创建别名模板:
template<typename T> using ptr = T*;
// the name 'ptr<T>' is now an alias for pointer to T
ptr<int> ptr_int;
typedef char CHAR, *PSTR;
CHAR myChar = 'A'; //char myChar = 'A';
PSTR myString = "Hello, world!"; //char *myString = "Hello, world!";
//当然这样代码的可读性不好