1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
а вот тут не понял( ты с какими ключами компилируешь?
С какими бы ключами ты не компилировал, попытка сделать:
vector<int> triangular(number_el); //ряд Треугольных чисел for(int i(0); i<number_el; ++i) triangular[ i ]=0.5*(i*i+3)+1; // int <- double
на уважающем себя компиляторе приведет к Warning-у... Я компилирую с -Wall (причем всегда...), GCC 3.4.5 + Code::Blocks
Цитата
это нормально вызывать конструктор для i несколько раз или этого надо избегать?
Избегать за счет предварительного описания переменной что-ли? Я все-таки предпочитаю делать время жизни переменной минимальным... Кстати, почему именно такая форма? Вот так не проще для восприятия:
Можешь объяснить, с чего ты взял, что i = 0 ("оператор =") будет выполняться быстрее, чем конструктор для POD-типа, которым является int?
я имел немножко другое, может лучше один раз объявить i, а потом один раз вызвать деструктор?
Цитата(volvo @ 14.06.2008 20:29)
Какой именно? Тот, которым пользуешься ты? Стандарт С++ открой, и посчитай, сколько там таких способов... А сколько - присваивания
насчет наследования Си, я руководствывался Липпманом*(это конечно не стандарт))). Там же несколько "преимуществ" нововведенного способа. Хотя сам Липпман, в последующих листингах пользуется оператором присваивания
*-Стэнли Липпман "Основы программирования на С++". Издательство "Вильямс" 2002год. глава 1.2 (страница 26, 6-я строка)
Цитата
Использования для инициализации оператора присваивания (=) унаследовано от языка С.
я имел немножко другое, может лучше один раз объявить i, а потом один раз вызвать деструктор?
Еще раз: в каждом цикле (в разделе инициализации, до первой точки с запятой оператора for) для объявленного тобой где-то сверху i будет вызываться "operator ="? Будет, иначе ты не присвоишь i правильное стартовое значение... Вопрос: кто тебе сказал, что для int конструктор будет выполняться медленнее, чем "operator ="?
c++ Помогите пожалуйсто! Нужно решение двух задач для зачета: 1Матрица: Получить целочисленную квадратную матрицу порядка 7, элементами которой являются числа 1, 2, ..., n, расположенные в ней по спирали. 2Рекурсия: Пусть x(1)=y(1)=1;x(i)=x(i-1)+y(i-1)/i^2; y(i)=y(i-1)+x(i-1)/i,i=2,3,... Получить x(n),y(m), если n, m -натуральные. Зарание спасибо
Что бы качестве параметров класс принимал любой класс, где определена операция вывода. Где идет проверка времени компиляции, что инстанцируемый класс имеет необходимую функцию ( чтоб избежать непонятных сообщений компилятора при попытке иснтанцировать левый класс) .
Мне не нужен код, а какой нибудь пример на заданную тему ...
#include <string> #include <iostream> #include <fstream> #include<memory> using namespace std ; //****************************************************************** class base { public : virtual void print () = 0 ; } ; //***************************************************************
class printmonitor : public base { string outString ;
ofstream out("outfile.txt",ios::out) ; if(!out) {cout <<"Cannot open file test for writing " << endl ; } out << outString ; out.close () ; } //*************************************************************** int main() {
//pprintmonitor = new printmonitor("test my program 1"); //pprintinfile = new printinfile("test my program 2"); auto_ptr<base> pprintmonitor (new printmonitor("test my program 1")) ; auto_ptr<base> pprintinfile (new printinfile("test my program 2")) ; pprintmonitor->print(); pprintinfile->print();
Ладно более конкретный вопрос.. "класс имеет необходимую функцию " - те функцию print() или перегруженный оператор << ? "идет проверка времени компиляции" - как она осуществляется , ну или что это такое ?
Как всегда помог, спасибо, а то у меня уже всё кипеть начинало, до меня просто суть задания не правильно дошла. Всмысле отказатся от иерархии и сделать через шаблоны, а я, как дурак, хотел совместить.