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

explicit и последствия. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти минимальные элементы столбцов матрицы http://www.cyberforum.ru/cpp-beginners/thread412299.html
пыталась решить задачу, написала такой вот код #include <iostream> #include <iomanip> #include <stdlib.h> #include <cstdio> #include <conio.h> #include <cmath>
C++ календарь помогите с задачей Нужно оформить через операторы циклов, Ввести на экран дату в формате ДД.ММ.ГГГГ, вывести на экран дату дня через неделю http://www.cyberforum.ru/cpp-beginners/thread412290.html
Как обратиться к элементу матрицы через одномерный массив? C++
Сабж. Возможно ли вообще обратиться например к 2 элементу, 2 строки через одномерный массив? типа matr?
Удалить из строки одинаковые слова. C++
Собственно, вот и само задание. Для заданного предложения необходимо найти и удалить одинаковые слова. Нужно на С. Поискал по форуму, но не нашел ничего подходящего. Буду благодарен за помощь
C++ Комментарии по коду http://www.cyberforum.ru/cpp-beginners/thread412279.html
С помощью шаблона добавления элемента в приведенном примере можно добавить только 1 элемент?? Зачем надо ~TElem(){Inf.ClearMem() (знаю, что нужен, но всеже)?? И с итераторами этими.. Это просто тот же цикл, просто в контейнере?? ///template <typename Inform> struct TElem{ /// Inform Inf; /// TElem *Prev, *Next; /// /// ~TElem(){Inf.ClearMem();} ///};
C++ Поменять местами столбцы в квадратной матрице по правилу: первый с последним, второй с предпоследним и т.д. #include <iostream> #include <conio.h> #include <stdlib.h> #include <time.h> #include <iomanip> #include <stdio.h> #include <malloc.h> using namespace std; подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.12.2011, 07:43     explicit и последствия.
эксплисит не защищает от неявного приведения, он блокирует именно неявный вызов конструктора.
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
clas B;
class A
{
 ...
 public:
  explicit A (B &x)
  {
   ...
  }
  explicit A (B *x)
  {
   ...
  }
};
class B
{
  ...
 public:
  operator A()
  {
    ...
  }
};
B b;
A a=b; // Так нельзя
A c; // А так
c=b; // можно.
Добавлено через 5 минут
Назначение - гарантировать, что в 30-й строке не будет неоднозначности в виде возможности приведения типа конструктором временного объекта типа A с последующим присваиванием уже его объекту c. Для приведения предназначены только операторы приведения, но компиляторы не всегда это понимают. Этот оператор здесь и будет вызван, но приведение именно неявное. При декларации же самого объекта получаешь лишь синтаксическую мелочь в виде скобок вместо равенства, но инитить можно. Скобки, кстати, можно юзить и без эксплисита. А по поводу перегрузосервачнодубля темы жалуйся администрации. Для этого на форуме есть специальная тема.
 
Текущее время: 22:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru