Форум программистов, компьютерный форум CyberForum.ru

Время жизни объекта - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проверка условия http://www.cyberforum.ru/cpp-beginners/thread1013499.html
Пожалуйста, помогите! Суть в том, что нужно прописать в if условие к функции void (знаю, что это неверно, но учитель сказал, что да, так не сделать, но что-то нужно изменить - но не тип функции). Так вот, как прописать грамотно условие? if( ( treug (1.0, 2.0, a,&x) ) && ( treug (2.0, 2.5, b,&x ) ) && (treug (2.5, d, c, &x ) ) ) Вот моя программа #include <iostream.h> #include <stdio.h>...
C++ printf и мультипоточность Как printf работает при нескольких потоках? То, что я знаю: printf пишет в буфер и при первой возможности выводит забуференное в консоль. Можно самостоятельной (принудительно) вывести то, что было забуферено при помощи fflush(). Вот чего я не могу понять, каждый поток имет свой буфер для stdout или они разделяют общий? Если разделяют, то неужели у него есть синхронизация примитивами или они... http://www.cyberforum.ru/cpp-beginners/thread1013495.html
C++ Линейные и развлетвляющиеся структуры!
Идет k-я секунда суток. Определить, сколько полных часов и полных минут прошло к этому моменту. Предусмотреть проверку вводимых данных на отрицательность. помогите,пожалйста))))спасибо
Определить сумму элементов в тех столбцах, которые содержат хотя бы один положительный элемент C++
Определить сумму элементов в тех столбцах, которые содержат хотя бы один положительный элемент. Добавлено через 1 час 26 минут нужен текст срочно?может кто-нибудь поможет? Добавлено через 20 минут const x=5,y=5; int i,j; float sum=0, massiv,st=0; //описание массива cout<<RUS("Введите massiv\n");
C++ Ошибка в простенькой программе http://www.cyberforum.ru/cpp-beginners/thread1013488.html
Условие: вводится число А, среди чисел 1, 1 + 1/2, 1 + 1/2 + 1/3 ... найти первое больше А и вывести его номер. S почему-то принимает значение 1 постоянно, 1/n не прибавляется. Код: #include <iostream> #include <conio.h> using namespace std; float A,tmp; int n = 1;
C++ не могу нормально считать фаил пытаюсь считать фаил в строковый массив через fread. Считывает нормально, но при этом записывает туда непонятные дополнительные символы. Помогите, пожалуйста, разобраться, что я делаю не так. в фаил записано предложение: You have come very fast. выводит You have come very fast. и какие -то потом непонятные символы. P.S фаил прикрепил. #include "stdafx.h" #include "conio.h" #include... подробнее

Показать сообщение отдельно
maddoxx
0 / 0 / 0
Регистрация: 17.02.2013
Сообщений: 24
20.11.2013, 19:44     Время жизни объекта
Доброго времени суток, объясните пожалуйста, как можно продлить время жизни объекта, который создан локально.
В данном случае - есть класс одномерный вектор с типом int.
Нужно перегрузить операторы + и = для выполнения след-й операции: с=a+b, где а,b,с - соответственно объекты класса.
Проблема в том, что когда у меня происходит сложение векторов, возвращается ссылка на локальный объект, и, как я понимаю, сразу же после выполнения сложения этот объект уничтожается, поскольку он объявлен локально.
Может быть я ошибаюсь, подскажите пожалуйста.
Часть кода:
Непосредственно сам класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#ifndef classMatrix_h
#define classMatrix_h
 
#include <iostream>
 
class matrix
{
    int size, error;
    int *ptr;
public:
    matrix();
    matrix(int);
    matrix(matrix &);
    matrix &operator=(matrix &right);
    matrix &operator+(matrix &right);
    void inputMatrix();
    void printMatrix(char name);
    void setError(int);
    int getError();
    void setSize(int);
    int getSize();
    void printError(int);
    ~matrix();
};
 
#endif classMatrix_h
Реализация класса(скопирую только перегрузки что бы было проще):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
matrix &matrix::operator+(matrix &right)
    {
        matrix tmpMtr(getSize() + right.getSize());
        int count = 0;
        for(int i=0; i<getSize(); i++)
            tmpMtr.ptr[i] = ptr[i];
        for(int i=getSize(); i<tmpMtr.getSize(); i++)
        {
            tmpMtr.ptr[i] = right.ptr[count];
            count++;
        }
        return tmpMtr;
    }
    matrix &matrix::operator=(matrix &right)
    {
        if (this->getSize() < right.getSize())
        {
            delete [] this->ptr;
            this->ptr = new int [right.getSize()];
            this->setSize(right.getSize());
        }
        for(int i=0; i<getSize(); i++)
            this->ptr[i] = right.ptr[i];
        return *this;
    }
И непосредственно главный файл, где вызываю перегрузку:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include "classMatrix.h"
 
using namespace std;
 
void main()
{
    cout << "Input size for object a: ";
    int tmpSize;
    cin >> tmpSize;
 
    matrix a(tmpSize);
    a.inputMatrix();
    a.printMatrix('a');
 
    cout << "Input size for object b: ";
    cin >> tmpSize;
 
    matrix b(tmpSize);
    b.inputMatrix();
    b.printMatrix('b');
 
    matrix c(tmpSize);
    (c=a+b).printMatrix('c');
    c.printMatrix('c');
 
    system("pause");
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru