Змінюй хід війни! Допомагай ЗСУ!

очень простой вопрос по C+

  • Автор теми Автор теми jammer77
  • Дата створення Дата створення
Статус: Офлайн
Реєстрація: 16.11.2007
Повідом.: 2117
очень простой вопрос по C++

Есть класс который реализует функции очереди.

Код:
#include "stdafx.h"
#include <iostream>
using namespace std;

///////////////////////////////////////////////////////////////////////////////
class Queue
{
	enum {SIZE = 4};
	int head;
	int tile;
	int queue[SIZE];
public:
	Queue():head(0),tile(-1){};
	void push(int i)
	{
		queue[++tile]= i;
	};
	int pop()
	{
		return queue[head++];
	};
};
///////////////////////////////////////////////////////////////////////////////


а теперь собственно говоря вопрос как заставить cout работать каскадно?

Код:
int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL, ".1251");
	Queue q1;

	q1.push(1);
	q1.push(2);
	q1.push(3);

	cout<<q1.pop()             //выводит очередь в обратном порядке
		<<q1.pop()
		<<q1.pop()<<endl;


	Queue q2;
	q2.push(1);
	q2.push(2);
	q2.push(3);

	cout<<q2.pop();          // выводит очередь в правильном порядке
	cout<<q2.pop();
	cout<<q2.pop()<<endl;



	system("pause");
	return 0;
}
 
что такое работать каскадно?
 
Ну создай другую очередь и реверсом запихни все элементы=)
 
Думаю, что никак. Насколько мне помниться порядок вызовов функций одного уровня
при вызове функций более высокого уровня, тобишь где то вот так f(f1(), f2(), f3()) не определен. Вероятна такая последовательность вызова f2(), f1(), f3(), но как правило либо с лева на право либо с права на лево. Более того, код приведенный тобой еще и потенциально опасен, если функции имеют какое-то внешнее воздействие.
Ну а если коротко, то это классический unbehaviour.
 
Думаю, что никак. Насколько мне помниться порядок вызовов функций одного уровня
при вызове функций более высокого уровня, тобишь где то вот так f(f1(), f2(), f3()) не определен. Вероятна такая последовательность вызова f2(), f1(), f3(), но как правило либо с лева на право либо с права на лево. Более того, код приведенный тобой еще и потенциально опасен, если функции имеют какое-то внешнее воздействие.
Ну а если коротко, то это классический unbehaviour.

Ты умничка. Все верно. А бороться с этим есть один метод. В таких функциях возвращаемый тип делаешь void и ее просто невозможно будет вызвать в выражении.
 
Тю :) Чи не вопрос для Сишнега и Сиси плюсплюснега :))) Для экзамена можно было бы придумать задрочку поинтересней ;)
 
Назад
Зверху Знизу