记录一些C++不常用功能点和一些C++的坑点,备查
Q.C++ using 关键字应用:
private 继承时,使用using 关键字在继承类中修改基类public成员的默认访问类型;
栗子:
class Base { public : int baseMethod() { std::cout << "hi~"; return base_memeber; } int base_memeber = 1; private : }; class Inherit : private Base { public: using Base::base_memeber; using Base::baseMethod; private: };
Q.C++ static 关键字应用:
函数中可以使用 static 关键字 定义静态变量,其作用范围只在其函数体中有效.
栗子:
int baseMethod() { static int t = 1;//只会初始化一次 t++; std::cout << "hi t: " << t; return t; }
Q. C++ Template ... 与Decltype ():
#include <iostream> #include "string" using namespace std; template<typename T> void func_one(T& val) { cout << val << endl << "finished"; } //不可用 template< typename T, typename... Args> auto func_two(int index, T& val, const Args&... args) -> decltype(T) { static int curIndex = 0; if (curIndex == index) { return val; } else { return func_two<T,Args...>(index, args...); } } template<typename T,typename... Args> void func_one(T& val, const Args&... args) { cout << val << endl; cout << "Test:" << endl; func_test(args...); //func_one(args...); } void func_test(double d, int i, string str) { cout << d << endl << i << endl << str << endl; } int main() { int x; func_one("1",2.0f,3,"4"); cin>>x; return 0; }