& 和 *在C++中有什么区别
&
用于声明引用类型,允许多个变量共享相同的内存位置。*
用于声明指针类型,允许存储另一个变量的内存地址,并通过指针间接访问和修改所指向变量的值。
auto, auto const&之间的区别
auto
用于推导变量的类型,忽略顶层const
修饰符和引用。auto const
用于推导常量值类型,保留顶层const
修饰符。auto const&
用于推导常量引用类型,并保留顶层const
修饰符。
decltype和 typeid的区别是什么
decltype
和typeid
都用于获取类型信息,但decltype
在编译时进行类型推断,适用于获取表达式的静态类型;而typeid
在运行时获取实际类型信息,适用于获取表达式的动态类型,尤其在多态对象和运行时类型检查方面非常有用。
using Ptr = T*; 的作用
模板别名定义,作用是将类型 T
的指针作为 Ptr<T>
的别名。
Template
类模板特化是在类模板的定义后面,通过指定特定的模板参数,来为特定类型提供自定义的定义。
template<typename T>struct is_basic :std::false_type{};
template< >struct is_basic<void >:std::true_type {};