C++: typedef & alias declaration (using)
整理自 C++ Primer, 5th Edition
所谓 alias declaration 就是 using X = Y;,它和 typedef Y X; 是完全等价的:
class SalesItem {
};
class SalesReport {
	
};
int main() {
	typedef SalesItem SI, *PSI;
	// equivalent to:
	// typedef SalesItem SI;
	// typedef SalesItem* PSI;
	
	using SR = SalesReport;
	using PSR = SalesReport*;
	
	SI si;
	PSI psi = new SI;
	PSI psi2 = new SalesItem;
	
	SR sr;
	PSR psr = new SR;
	PSR psr2 = new SalesReport;
	
	delete psi;
	delete psi2;
	delete psr;
	delete psr2;
}
~~~~~~~~~~ 2015-05-16 补充;来自 C++ Primer, 5th Edition ~~~~~~~~~~
Under C++11, we are able to define a type alias for a class template:
template<typename T> using twin = pair<T, T>;
twin<string> authors; // authors is a pair<string, string>
template <typename T> using partNo = pair<T, unsigned>;
partNo<string> books; // books is a pair<string, unsigned>
简单地说就是 twin<T> == pair<T, T> 和 partNo<T> == pair<T, unsigned>。注意这种语法。
留下评论