首页IT科技二类文章题目字数要求(类模板)

二类文章题目字数要求(类模板)

时间2025-05-03 20:16:58分类IT科技浏览3291
导读:类模板=>实力化=>模板类 通过类模板实现栈,点击查看代码 #...

类模板=>实力化=>模板类

通过类模板实现栈,点击查看代码 #include <iostream> #include <cstring> using namespace std; template<typename T> //template<typename T=int> 也可以这样写,写个默认类型 //这是个模板名称         ,模板名称+类型参数列表=类名称 class MyStack { public: //在构造和析构函数名字后面可以不加<T> MyStack<T>(int _size = 10) : size(_size), top(-1), pHead(new T[size]) { } //拷贝构造 MyStack<T>(const MyStack<T> & src) : top(src.top), size(src.size) { pHead = new T[size]; for (int i = 0; i<top; i++) { pHead[i] = src.pHead[i]; } } MyStack<T> & operator=(const MyStack<T> & src) { if (this == &src) { return *this; } delete[] pHead; pHead = new T[size]; for (int i = 0; i<src.top; i++) { pHead[i] = src.pHead[i]; top++; } return *this; } //析构栈 ~MyStack() { delete[] pHead; pHead = nullptr; } //弹栈 void pop() { if (Empty()) { return; } this->top--; } T getTop() const { if (Empty()) { throw "Stack is Empty"; } else { return pHead[top-1]; } } //压栈 void push(const T & _val) { if (Full()) { Expend(); } if (Empty()) { top = 0; } pHead[top++] = _val; } //是否是空的 bool Empty()const { return top<0; } //是否是满的 bool Full()const { return top == size-1; } void show() const { for (int i = 0; i < this->top; i++) { cout << pHead[i] << endl; } } void Test()const; private: int size;//定义栈大小 int top;//定义栈顶位置 T *pHead; //定义栈底指针 //空间扩展 void Expend() { int newSize = 2 * size; T *tepPHead = new T[newSize]; for (int i = 0; i < top; i++) { tepPHead[i] = pHead[i]; } this->size = newSize; delete[]this->pHead; this->pHead = tepPHead; } }; template<typename T> void MyStack<T>::Test()const { cout << "Test" << endl; } int main() { //类模板的选着性实例化 //模板类 class MyStack<int>{}; MyStack<int> s1; s1.push(100); s1.push(50); s1.push(20); s1.push(200); s1.show(); int topVal = s1.getTop(); cout << topVal << endl; system("pause"); return 1; }

//类模板的选着性实例化 模板类 class MyStack{};

类模板是把类中的数据类型参数化

类模板的使用

类模板和函数模板的区别

类模板的默认参数

类模板的默认参数注意

类模板不会自动推导数据类型,要显示的告诉编译器是什么类型

默认的参数必须放在最后一个,换句话说,默认参数后面不能再出现非默认参数

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
vue自动加载方法(vue3的unplugin-auto-import自动引入)