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

Переопределение операции присваивания - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как реализовать флаги в параметрах функции http://www.cyberforum.ru/cpp-beginners/thread1235623.html
Объясните пожалуйста как реализовать флаги в параметрах функции. К примеру: есть такие флаги left middle right drowPoints (тут параметры флаги); Вот так я эти флаги прописываю
C++ Исправить ошибку "undefined reference" Компилирую в Ubuntu 14.04 Code::Block Есть 3 файла. klass.h initial.cpp main.cpp klass.h #include <iostream> #include <cstring> using namespace std; class Book http://www.cyberforum.ru/cpp-beginners/thread1235621.html
C++ Убрать привязку к конкретной директории. GetCurrentDirectory
Привет, всем! Новая проблемка, имеется следующее: D3DXCreateTextureFromFileEx(pDirect3DDevice, "C:/Users/Anton/Documents/Visual Studio 2010/Projects/MyProgectSprite/OpeningScreen.bmp", D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, D3DCOLOR_ARGB(255,255,255,255), NULL, NULL, &openingTexture); Мне не нравится строка...
Программа ввода и проверки пароля C++
Я хочу написать программу запрашивающая пароль пока тот не станет верным написал прогоамма работало но даже если пароль был не верен просто выводила другую строку добавил цикл программа не работает вот код #include <iostream.h> #include <stdio.h> #include <locale> using namespace std; int hacerAlert () { string answer;
C++ Игра крестики нолики http://www.cyberforum.ru/cpp-beginners/thread1235549.html
#include <iostream> using namespace std; int main () { int a,k=0,c; char mas; while(k<10) {
C++ Вывод числа в столбик с первой цифры, без массива, без строк #include <iostream> #include <math.h> using namespace std; void p(long a) { long i=0,z=a; while (z) { z/=10; i++; //êîëè÷åñòâî öèôð âî ââåäåííîì ÷èñëå подробнее

Показать сообщение отдельно
Gwini
10 / 10 / 3
Регистрация: 08.03.2014
Сообщений: 70
29.07.2014, 07:14  [ТС]     Переопределение операции присваивания
Цитата Сообщение от dalay_lama Посмотреть сообщение
И кстати, только сейчас обратил внимание. Очень ты не внимательно читаешь) Если б внимательно читал, то знал бы, что операция присваивания не наследуется, соответственно, виртуальной её не нужно объявлять. Если операция присваивания по умолчанию не переопределена, то свойства просто почленно друг друга скопируют, а если класс является производным, тогда сначала вызовется оператор присваивания базового класса, чтобы скушать свои свойства( и соответственно для него, вызовется тот оператор присваивания который определён, т.е. который написал ты или по умолчанию). Соответственно, если ты переопределяешь для производного класса оператор присваивания, тебе нужно вызвать самому оператор присваивания для базового класса
Есть там такое
C++
1
2
3
4
5
6
7
8
9
10
11
12
Classic& Classic::operator=(const Cd& c)
{
 
    if (this == &c)
        return *this;
    delete[] main_cmps;
    Classic temp = (const Classic&)c;   
Cd::operator=(c);
    main_cmps = new char[strlen(temp.main_cmps) + 1];
    strcpy(main_cmps, temp.main_cmps);
    return *this;
}
И я читал внимательно читал что не наследуется, но вирутальной ее сделать можно. Я понимаю что это может и бесполезно, но мне все же интересно.

Добавлено через 11 минут
Вот к примеру, где могла бы использоватся переопределенная операция присваивания
C++
1
2
3
4
    Cd* ptr = &c1; //указатель на базовый класс, с1 обьект базового класса
    ptr->Report();
    *ptr = c3;    //с3 - обьект производного класса
    ptr->Report();
Может это вообще не имеет смысла?
 
Текущее время: 19:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru