12类和对象代码示例

类和对象代码实例

class Queue {
private:
	int* _pQue;
	int _front;
	int _rear;
	int _size;
public:
	Queue(int size = 5) {
		cout << "构造" << endl;
		_size = size;
		_pQue = new int[size];
		_front = _rear = 0;
	}
	~Queue() {
		cout << "析构" << endl;
		delete[]_pQue;
		_pQue = nullptr;
	}
	Queue(const Queue& src) {
		cout << "拷贝构造" << endl;
		if (&src == this) {
			return;
		}
        //深拷贝
		delete[]_pQue;
		_pQue = new int[src._size];
		_size = src._size;
		_front = src._front;
		_rear = src._rear;
		for (int i = _front; i != _rear; i = (i + 1) % _size) {
			_pQue[i] = src._pQue[i];
		}
	}
	void push(int val) {
		if (full()) {
			resize();
		}
		_pQue[_rear] = val;
		_rear = (_rear + 1) % _size;
	}
	void pop() {
		if (empty()) {
			return;
		}
		cout << _pQue[_front] << endl;
		_front = (_front + 1) % _size;
	}
	int full() {
		return _front == (_rear + 1) % _size;
	}
	int empty() {
		return _rear == _front;
	}
	int top() {
		return _pQue[_front];
	}
	void resize() {
		int* newqueue = new int[2 * _size];
		int index = 0;
		for (int i = _front; i != _rear; i = (i + 1) % _size) {
			newqueue[index++] = _pQue[i];
		}
		delete[]_pQue;
		_pQue = newqueue;
		_front = 0;
		_rear = index;
		_size *= 2;
	}
};

int main() {
	Queue qq;
	for (int i = 0; i < 20; i++) {
		qq.push(rand() % 100);
	}
	Queue pp = qq;
	
	while (!qq.empty()) {
		qq.pop();
	}
	while (!pp.empty()) {
		pp.pop();
	}
	return 0;
}
posted @ 2024-01-16 10:43  SIo_2  阅读(27)  评论(0)    收藏  举报