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

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

Войти
Регистрация
Восстановить пароль
 
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
#1

Преобразование типов - C++

27.01.2011, 02:48. Просмотров 581. Ответов 3
Метки нет (Все метки)

Вообщем допустим есть два класа, класс T и класс A, комплексные числа в разной форме записи(тригонометрической и алгебраической). Для класа А не определен оператор умножения, но он определен для класса Т. Для класса Т определен конструктор, принимающий аргументом объект класса А и наоборот.
Срабатывает следующее
C++
1
2
3
A a1;
A a2;
a1=a1*a2;
Так как есть прописаный оператор для класа Т и возможно перевести класс А в класс Т, програма так и делает: создает два новых Т-объекта из аргументов оператора и Т-результат. А после создается новый А-объект копированием Т-результата и он и есть возвращаемым значением.
Так происходит на практике.
Собственно вопрос: почему так происходит и нормальный ли это метод, можно ли на него полагатся или лучше реализовать операторы отделаьно для каждого класса?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2011, 02:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование типов (C++):

Преобразование типов - C++
что-то не пойму почему такая ошибка код такой... .... cnetPars.parse(xml, m_creator, m_name, m_info, m_plane, m_idmap); .... ...

Преобразование типов - C++
Вопрос по преобразованию строки в число , и наоборот . Например на форме расположен MaskedTextBox , Button и Label . Как при нажатии на...

Преобразование типов - C++
С учебника переписал код на применение структур, но возникла проблема с преобразованием типов. Вот код проги: #include "stdafx.h" ...

Преобразование типов - C++
Вот я создаю двумерный массив n=1; m=2; char **mas=new char *; mas=new char; после этого мне нужно увеличить размер...

преобразование типов - C++
memcpy((void*)stroka,(void*)stroka,ykaz_bukva-ykaz_temp+1); что нужно поставить вместо void* чтоб не было предупреждений

Преобразование типов - C++
Как преобразовать char * в float?

3
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
27.01.2011, 16:19 #2
Неявного преобразования типов желательно избегать (если, конечно, изначально не ставится обратная цель). Для этого надо, во-первых, определить оператор умножения для класса A, а во-вторых, конструктор класса T, принимающий аргументом объект класса А, сделать явным (то есть написать перед ним слово explicit).
0
alex_x_x
бжни
2449 / 1654 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
28.01.2011, 04:46 #3
ааа, приведите пример, у меня без явного преобразования не заработало
хотя не удивлюсь если так
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
28.01.2011, 06:28 #4
У тебя оба класса имеют общую суть и логичней всего было бы наследовать оба класса от общего абстрактного предка.

Добавлено через 4 минуты
И почему без явного преобразования не заработало? Сделай оператор умножения в классе A и всё будет работать. И, наоборот, сделай оператор сложения в классе T. Причём, реализация может использовать и приведение типа, но уже явное:
C++
1
2
3
4
T T::operator + (T y)
{
 return (T)(((A)*this)+((A)y));
}
и
C++
1
2
3
4
A A::operator * (A y)
{
 return (A)(((T)*this)*((T)y));
}
.
0
28.01.2011, 06:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2011, 06:28
Привет! Вот еще темы с ответами:

Преобразование типов - C++
кое-что о преобразовании типов. float F; __int32 DW; DW=*(__int32 *)&F; значение DW должно совпадать с F побитово, без всяких...

Преобразование типов - C++
есть следующая маленькая программка #include <iostream> #include <conio.h> using namespace std; int main() { int oldFunt,...

Преобразование типов в С++ - C++
Задача: Определить два класса, String с преобразованием из char * в строку и обратно. Мой код: #include <iostream> ...

Преобразование типов - C++
Господа, мое терпение и срок, отведенный мне на решение задачи начальством, кончились. У меня одна функция возвращает один тип, а...


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

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

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