12 / 12 / 2
Регистрация: 23.01.2013
Сообщений: 143
|
||||||||||||||||
1 | ||||||||||||||||
Объекты и приведение типов28.08.2013, 10:36. Показов 1005. Ответов 15
Метки нет (Все метки)
Добрый день.
Я написал класс, на подобии std::string, только для типа wchar_t. Вот сам класс:
0
|
28.08.2013, 10:36 | |
Ответы с готовыми решениями:
15
Приведение типов Приведение типов Приведение типов Приведение типов |
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
28.08.2013, 10:42 | 2 | |||||
fuelcs, Потому что
1
|
12 / 12 / 2
Регистрация: 23.01.2013
Сообщений: 143
|
|
28.08.2013, 10:44 [ТС] | 3 |
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
28.08.2013, 10:47 | 4 |
fuelcs, То, что у вас написано, это так называемый conversion constructor. Там где компилятор по правилам языка может преобразовать выражение в тип, который подойдет для вызова функции - выражение будет преобразовано, если явно не указать компилятору что делать этого не надо.
1
|
12 / 12 / 2
Регистрация: 23.01.2013
Сообщений: 143
|
|||||||||||
28.08.2013, 10:52 [ТС] | 5 | ||||||||||
ForEveR,
а так я могу сделать?
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
28.08.2013, 11:10 | 6 | |||||
fuelcs, Можете. Но лучше бы
0
|
12 / 12 / 2
Регистрация: 23.01.2013
Сообщений: 143
|
||||||||||||||||
28.08.2013, 16:05 [ТС] | 7 | |||||||||||||||
ForEveR, Если я правильно понял суть, то можно перегрузить конструктор с параметрами для различных типов данных, а оператор плюс перегрузить только для объектов класса?
Было:
Еще есть вопрос, можно ли перегрузить Conversion Function? Например:
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||||||
28.08.2013, 16:12 | 8 | |||||
operator+ необходимо перегрузить таким образом, чтобы он мог принимать участие в выражениях:
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||
28.08.2013, 16:14 | 9 | ||||||||||
fuelcs, (void) в С++ писать не нужно. Лишнее и абсолютно бессмысленное занятие.
У вас конструкторы не explicit, поэтому будет вполне себе компилироваться такой код:
1
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||||||
28.08.2013, 16:49 | 10 | |||||
И еще, обрати внимание, что такой кусок кода скомпилируется (ура неявным преобразованиям!):
0
|
12 / 12 / 2
Регистрация: 23.01.2013
Сообщений: 143
|
|||||||||||
28.08.2013, 17:01 [ТС] | 11 | ||||||||||
будет! у меня в программе почти так и есть...
То есть окончательный вариант такой:
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||||||
28.08.2013, 17:08 | 12 | |||||
Только надо так:
1
|
12 / 12 / 2
Регистрация: 23.01.2013
Сообщений: 143
|
|
28.08.2013, 17:09 [ТС] | 13 |
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
28.08.2013, 17:16 | 14 |
В том, что во втором случае вероятность появления неожиданных побочных эффектов становится ниже, код ясно выражает намерения разработчика.
0
|
12 / 12 / 2
Регистрация: 23.01.2013
Сообщений: 143
|
||||||
28.08.2013, 17:28 [ТС] | 15 | |||||
И еще вопрос, может не совсем по теме. Базовые типы данных - являются классами? Что для них приведение типа? Тут уместна аналогия, что на пример при:
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
28.08.2013, 19:15 | 16 |
fuelcs, Нет. Это просто приведение. Базовые типы не являются классами.
0
|
28.08.2013, 19:15 | |
28.08.2013, 19:15 | |
Помогаю со студенческими работами здесь
16
Приведение типов Приведение типов Приведение типов Приведение типов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |