100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > C++模板类嵌套类内部类局部类的区别

C++模板类嵌套类内部类局部类的区别

时间:2024-04-06 12:00:15

相关推荐

C++模板类嵌套类内部类局部类的区别

模板类就是将类定义成模板的形式。

C++中好像不区分内部类与嵌套类两个名词。

内部类与嵌套类都是指在类中定义类。

局部类是指在函数中定义类。

(c++不能在函数中定义函数(python可以)。c++在类中定义的函数也就是成员函数。)

(c++内部类与java内部类最大的区别就是:c++的内部类对象没有外部类对象的指针,不能访问外部类对象的非静态成员;java的非静态内部类对象有外部类对象的指针,能访问外部类对象的非静态成员。

java 中右多个内部类,还有匿名内部类。

通过嵌套类定义自己的队列Queue:

Queue类里面嵌套一个Node类:

编写Queue.h文件:

#ifndef QUEUE_H_#define QUEUE_H_template<class Type>class Queue{private:enum {Q_SIZE = 10};class Node{public:Type data;Node * next;Node(const Type data) : data(data), next(0) {}}; Node *front;Node *rear;int curSize;int maxSize;public:Queue(int size = Q_SIZE);~Queue();bool isFull() const;bool isEmpty() const ;bool enQueue(const Type data);bool deQueue();void tarverseQueue() const;};#endif

编写Queue.cpp文件:

#include <iostream>#include <string>#include <cstring>#include <cstdlib>#include <valarray>#include "Queue.h"using std::cout;using std::endl;template<class Type>Queue<Type>::Queue(int size) : maxSize(size) {front = rear = 0;curSize = 0;}template<class Type>Queue<Type>::~Queue() {Node *tmp;while (front != 0) {tmp = front;front = front->next;delete tmp;}}template<class Type>bool Queue<Type>::isFull() const {return curSize >= maxSize;}template<class Type>bool Queue<Type>::isEmpty() const {return curSize == 0;}template<class Type>bool Queue<Type>::enQueue(const Type data) {if (isFull()) {return false;} Node *node = new Node(data);if (front == 0) {front = node;} else {rear->next = node;} rear = node;curSize++;return true;}template<class Type>bool Queue<Type>::deQueue() {if (isEmpty()) {return false;}Node *tmpNode = front;front = front->next;delete tmpNode;if (front == 0) {rear = 0;}curSize--;return true;}template<class Type>void Queue<Type>::tarverseQueue() const {Node *head = front;while (head != 0) {cout << head->data << endl;head = head->next;}}int main(int argc, char *argv[]) {Queue<int> queue(10);queue.enQueue(11);queue.enQueue(12);queue.tarverseQueue();return 0;}

参考资料:

/solariens/article/details/52314896

/lw585625/article/details/84085249

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。