C++类模板(1)
类也可以通过参数泛化,从而构建出一族不同型别的类实例(对象)。
类模板实参可以是牟一星别或常量
C++类模板(2)
const std::size_t DefaultStackSize = 1024;
template<typename T,std::size_t n=DefaultStackSize>class Stack{
public:
void PUsh(const T const& element);
int Pop(T& element);
int Top(T& element) const;
private:
std::vector<T> m_Membets;
std::size_t m_nMaxSize = n;
};
C++类模板(3)
类模板的声明
声明类模板与声明函数模板类似
template <typename T,std::size_t n>class Stack{…};
成员函数和变量声明:
void PUsh(const T const& element);
std::vector m_nMaxSize ;
C++类模板(4)
类模板的构造函数中,完整的类型也要写出
template <typename T,std::size_t n>class Stack
{
public:
...
Stack(Stack<T,n> const &);
Stack<T>& operator=(Stack<T,n> const&);//也就是不能只写Stack
..
};
C++类模板(5)
类模板的实现
。。。。
C++类模板(8)
使用类模板
Stack stack;
Stack<int,100>stack;
注:在强制转换类型中,static_cast就是一个函数模板
static_cast(int a = 10);//其中的float就相当于T。
vector a(10);
C++类模板(9)
类模板特化
二、C++操作符重载(1)
关键字operator定义了一种特殊的函数,其实也就是
两个数相加函数为add(a,b);通过操作符重载+号,有了 a+b;就更方便,本质来说,operator+也函数功能是一样的,就是更方便。
C++操作符重载(2)
重载就是已经有的,所以不能定义一种新的操作符