Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
QGuest
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
#1

Перегрузка оператора = для указателей - C++

07.07.2014, 19:51. Просмотров 315. Ответов 7
Метки нет (Все метки)

Существует ли возможность предопределить оператор = для такого случая?

C++
1
2
Object* first = new Object();
Object second = first; // Вот тут =
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2014, 19:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка оператора = для указателей (C++):

Перегрузка оператора + для стека - C++
Добрый день. Прошу помощи с перегрузкой этой операции. Цель: перегрузить + так,чтобы он складывал элементы двух стеков в третий.Вроде...

Перегрузка оператора == для string - C++
#include <iostream> #include <conio.h> #include <fstream> #include <string> #include <stdlib.h> using namespace std; class...

Перегрузка оператора + для структуры - C++
У нас есть две строки S1, S2 .После выполнения S3 = S1 + S2 : 1)в S3 должны быть символы входящие в S1 и в S2 одновременно. 2)Посчитать...

Перегрузка оператора * и / для строки - C++
Есть класс MyString нужно написать перезагрузку Операция *: должна вернуть новую строку, которая возникнет путем пересечения двух строк,...

Перегрузка оператора для класса - C++
Здравствуйте! Подскажите, пожалуйста, почему так не работает: class ClassA { public: ClassA() { m = 1; ...

Перегрузка оператора << для шаблона - C++
У меня есть структура студенты, а класс-шаблон массив элементов. Как сделать оператор универсальным, подходящим для любых типов(и для...

7
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
07.07.2014, 19:58 #2
C++
1
Object second = *first;
0
QGuest
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
07.07.2014, 20:05  [ТС] #3
MrCold, я ошибся немного. Имел в виду вот это:
C++
1
2
Object* first = new Object();
Object* second = first; // Вот тут =
И чтоб в этом месте выполнялся метод вроде этого:
C++
1
2
3
4
5
6
class Object {
   Object* operator=(Object* other) {
      //некоторый код
      return other;
   }
};
0
ValeryS
Модератор
6705 / 5114 / 482
Регистрация: 14.02.2011
Сообщений: 17,182
07.07.2014, 20:17 #4
Цитата Сообщение от QGuest Посмотреть сообщение
Object* second = first;
ну
у тебя два указателя указывать будут на один объект
а ты хочешь создать другой объект?
а зачем?
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
07.07.2014, 20:23 #5
Цитата Сообщение от QGuest Посмотреть сообщение
Существует ли возможность предопределить оператор = для такого случая?
Можно создать свой класс указателей.
0
QGuest
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
07.07.2014, 20:27  [ТС] #6
ValeryS, я не хочу создать новый объект. Мне нужно посчитать количество указателей на объект.

Добавлено через 47 секунд
Цитата Сообщение от Dani Посмотреть сообщение
Можно создать свой класс указателей.
можно небольшой пример?
0
ValeryS
Модератор
6705 / 5114 / 482
Регистрация: 14.02.2011
Сообщений: 17,182
07.07.2014, 20:32 #7
Цитата Сообщение от QGuest Посмотреть сообщение
Мне нужно посчитать количество указателей на объект.
однако странный способ
Цитата Сообщение от QGuest Посмотреть сообщение
Object* second = first;
а зачем тебе знать количество?
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
07.07.2014, 20:34 #8
QGuest, что-то вроде этого
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
#include <iostream>
 
 
struct MyClass
{
};
 
struct MyClassPtr
{
    MyClassPtr(MyClass) { std::cout << "Constructor\n"; }
    MyClassPtr(MyClassPtr&) { std::cout << "Copy constructor\n"; }
    MyClassPtr& operator=(MyClassPtr&) { std::cout << "operator=\n"; return *this;}
};
 
 
int main()
{
    MyClass x, y;
    MyClassPtr a(x);
    MyClassPtr b(a);
    MyClassPtr c(x);
    c = b;
 
    return 0;
}
Где стоят cout можно заменить на нужный код.
1
07.07.2014, 20:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2014, 20:34
Привет! Вот еще темы с ответами:

Перегрузка оператора -> для шаблонного класса - C++
Здравствуйте! Возникла проблема: не могу додуматься как перегрузить оператор -&gt; так, чтобы он корректно работал. Вот код: template&lt;class...

Глобальная перегрузка оператора << для cout - C++
Как можно глобально перезагрузить этот оператор для cout ? + его перезагрузка должна зависить от аргументов Command Line. int...

Перегрузка оператора == для двух векторов - C++
помогите написать перегрузку оператора == для 2 векторов.

Перегрузка оператора для последовательных действий - C++
Можно как нибудь перегрузить оператор, что бы можно было выполнить, например: Matrix a, b, c, d; d = a * b * c; У меня пока...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru