Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Файл input.txt содержит следующую информацию: https://www.cyberforum.ru/ cpp/ thread87711.html
Файл input.txt содержит следующую информацию: 1 строка - количество элементов массива (N) 2 строка - N целых чисел (массив 1) 3 строка - N целых чисел (массив 2) Написать программу, создающую на основе этих к данных файл output.txt, содержащий самую длинную непрерывную последовательность чисел, присутствующую в обоих массивах.
C++ Использование указателей в программах
Использование указателей в программах:
C++ С++ изучен синтаксис, что дальше? https://www.cyberforum.ru/ cpp/ thread87449.html
Здравствуйте, обращаюсь за советами. Прочитал книгу по синтаксису C++ - то есть знания на начальном уровне есть (пусть не все явно усвоил, но тут уже дело опыта). Хочу перейти на следующие "ступень" и уже писать что-то, поэтому собственно вопрос - что читать дальше? Вопросы соберу порядку чтобы было удобней отвечать. 1) Какую библиотеку выбрать для написание легких GUI Windows...
C++ Ввод/Вывод байтов в файл Есть у меня vector, заполненный 0-ми и 1-ми. Нужно по битовым способом вывести последовательности нулей и единиц(из вектор) в файл. спасибо. https://www.cyberforum.ru/ cpp/ thread87442.html
C++ Объекты и Классы
Кто ни будь, может подробно и понятно обьяснить или дать линк на статью о том, что такое Класс, и Объект?
C++ Самописный диалог Надо сделать свой диалог с экзекьютом на сях. Как это делается? https://www.cyberforum.ru/ cpp/ thread87378.html
C++ надо помочь лабами........что-то вообще никак... Тема: «Решение задач обработки строк и символов» №1 В строке заменить все точки «.» на запятые «,», а двоеточия «:» на точку с запятой «;». Подсчитать количество замен. №2 Дана строка, указать те слова, которые содержат хотя бы одну букву «k». Считать, что слова в тексте отделены друг от друга одним пробелом. №3 В заданном предложении указать слово, в котором доля согласных... https://www.cyberforum.ru/ cpp/ thread87290.html Курс C++
В общем пишется курсовик на С++ нужна помощь, доделать буквально на полчаса, заплачу, пишите тут или в личку.
C++ Execute Привет ! почему когда я открываю игру через это игра не открывается ??? но она появляется только в диспечере задач ! :(:(:( WinExec( ShellExecute( я пробовал ети две https://www.cyberforum.ru/ cpp/ thread87142.html C++ Почему...? https://www.cyberforum.ru/ cpp/ thread86817.html
Проргамма печатает данные текстовово фаила dog.txt который находится в той же директории что и компилятор. Име либо вводится пользовательом, либо указеваетса в имени программы и работет с помощю argv-argc. Ошибку НЕ выдаёт, но не включается. В чём дело? #include <iostream> #include <string.h> #include <fstream> using namespace std; int main(int argc, char *argv) { int i; char filename;
Папка с файлами C++
Нужна помощь с С++,а то я в нем совсем новичек. Как работать с папкой файлов? (например, проверить ли пуста она или если содержит файлы, то вывести их названия).
C++ hash строк Доброго времени суток! =) Зачем: Для игры понадобилась база данных стандартных строк типа как данные для удобного перевода (всмысле весь текст вне игры). Чтобы в коде было удобнее обращаться к строкам хотелось бы ввести простые имена вида D12.S10 который допустим будет указывать на то что строка будет для диалога 12 и это будет 10 реплика. Это только пример и впринципе эти простые имена будут... https://www.cyberforum.ru/ cpp/ thread86478.html
Эксперт С++
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
20.01.2010, 17:05 0

Как передалеть operator= класса? - C++ - Ответ 491883

20.01.2010, 17:05. Показов 6959. Ответов 78
Метки (Все метки)

Ответ

OVERPOWER8, я тебе уже говорил про опастность использования указателей для храниения таких примитивных данных как возраст. Ты не хотел слушать и вот результат - в простейшем классе серьезная и очень неприятная ошибка. А если класс в 10 раз больше и классов не один десяток?
Никакое удобство не оправдывает опастности связанные с использованием указателей, там где они не нужны - избавься от такой практики.

Как уже было написано - не хватало конструктора копирования.
Поэтому у тебя указатели itsAge и itsWeight после выполнения строки
C++
1
CAT whiskers = Frisky;
указывают на одни и те же области памяти.


Вот рабочий вариант твоего кода (по крайне мере, codepad.org выдает ожидаемый результат).
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
 
using namespace std;
 
class CAT
{
        public:
                CAT();
                CAT(const CAT& rhs);
                ~CAT();
                
                int GetAge() const { return *itsAge; }
                int GetWeight() const { return *itsWeight; }
                void SetAge(int age) { *itsAge = age; }
                CAT& operator=(const CAT&);
        
        private:
                int* itsAge;
                int* itsWeight;
};
 
CAT::~CAT()
{
        delete itsAge; itsAge=0;
        delete itsWeight; itsWeight=0;
}
 
CAT::CAT()
{
        itsAge = new int;
        itsWeight = new int;
        *itsAge = 5;
        *itsWeight=9;
}
 
CAT::CAT(const CAT& rhs)
{
       itsAge = new int;
       itsWeight = new int;
 
       *itsAge    = rhs.GetAge();
       *itsWeight = rhs.GetWeight();
}
 
CAT& CAT::operator=(const CAT& rhs)
{
        if(this == &rhs)
                return *this;
        
        *itsAge=rhs.GetAge();
        *itsWeight=rhs.GetWeight();
        return *this;
}
 
int main()
{
        CAT Frisky;
        cout << "Frisky's age: " << Frisky.GetAge() << endl;
        Frisky.SetAge(6);
        
        CAT whiskers = Frisky;
        Frisky.SetAge(0);
        cout << "whisker's age: " << whiskers.GetAge() << endl;
        
        return 0;
}
И еще:
C++
1
2
3
4
5
6
7
8
CAT::~CAT()
{
  delete itsAge;
  itsAge = 0;
 
  delete itsWeight;
  itsWeight = 0;
}
Вместо 0 используй NULL. 0 - непереносимый вариант нулевого указателя. Подробнее здесь.

Вернуться к обсуждению:
Как передалеть operator= класса? C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2010, 17:05
Готовые ответы и решения:

operator+ как член класса
Могу ли я сделать operator+ как член класса таким образом? myClass&amp; myClass::operator+(const...

Как перенести operator из базового класса в производный?
Добрый день! Подскажите, пожалуйста, на простых примерах, как нужно работать с оператором...

Класс: Почему этот operator+ не хочет работать как функция внутри класса?
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; class complex{ private: int...

operator[][] для класса
Добрый день, создал класс где храниться массив, и хотелось бы иметь напрямю доступ через по типу ...

78
20.01.2010, 17:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.01.2010, 17:05
Помогаю со студенческими работами здесь

Operator< для класса
Всем добра, что-то я туплю подскажите как определить operator&lt; для класса, в классе два значение...

Перегрузка operator* у класса Complex
Complex* Complex::operator*(const Complex&amp; other) const { Complex* product = this; ...

Не работает operator<< шаблонного класса Vector
Компилятор выдает ошибку error LNK2019: unresolved external symbol &quot;class...

Перегрузка operator>> для производного класса
Базовый класс: Taxi_Car.h: #pragma once #include&lt;string&gt; using namespace std; class...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru