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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Критика архитектуры набора планов http://www.cyberforum.ru/cpp/thread335057.html
Требуется создать систему похожую на Hierarchical task network то есть некоторая библиотека планов и каждый план может содержать подпланы, получать результаты выполнения подпланов и передавать их...
C++ Решение игры "вирус"? В инете есть много флеш игр на тему вирусов. Поле поделено на квадраты из нескольких цветов и нужно всё заразить на наименьшее число ходов. Хочу потренироваться находить решения таких задач. Для... http://www.cyberforum.ru/cpp/thread333845.html
Чекер удаленных серверов на ОС C++
Доброго времени суток. Я этот форум читаю уже достаточно давно, но все никак не приходилось здесь зарегистрироваться. Сейчас обращаюсь к вам с просьбой. Помогите написать программку, которая будет...
C++ Управляющая последовательность \f
Уважаемые форумчане! Я давно изучаю язык С++, но пользуюсь только несколькими управ. последовательнотсями(в основном \n):-[. Недавно я хахотел узнать о др. последовательностях. В книге Шилдта "Полный...
C++ Записать в файл g целые числа b 1 , ..., b n , где при i = 1, 2, ..., n значение b i равно: i. http://www.cyberforum.ru/cpp/thread331777.html
Дано натуральное n. Записать в файл g целые числа b 1 , ..., b n , где при i = 1, 2, ..., n значение b i равно: i.
C++ Quest3D 4.2.3 Приветсвую всех!!! Люди мне нужна помощь. Никак не могу найти в сети Quest3D 4.2.3.точнее нашел но все ссылки либо платные либо не работают.если кто может дать мне работующюю ссылку буду очень... подробнее

Показать сообщение отдельно
TheAthlete
153 / 153 / 13
Регистрация: 31.08.2010
Сообщений: 535
22.07.2011, 13:38  [ТС]
Всем спасибо за комментарии. Разобрался.
Тоже написал простой пример, который описывает данную ситуацию:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
 
class test {
  public:
    explicit test(const std::string &book = "") : tbook(book) {}
    bool same_isbn(const test &rhs) const { return isbn == rhs.isbn; }
  private:
    std::string tbook;
    std::string isbn;
};
 
int main() {
  std::string null_book = "9-999-99999-9";
  test item;
  item.same_isbn(test(null_book));
  return 0;
}
В данном примере, функция same_isbn ожидает в качестве аргумента объект класса test. Если не указать ключевое слово explicit, то можно будет использовать следующую конструкцию:

C++
1
item.same_isbn(null_book);
В данном случае, чтобы создать новый объект класса test из строки null_book, компилятор использует конструктор класса test, который получает объект класса string. Этот вновь созданный (временный) объект класса test и передается функции same_isbn().

Если указать ключевое слово explicit. То данная конструкция вызовет ошибку компиляции. Для этого необходимо явно указать объект класса test:

C++
1
item.same_isbn(test(null_book));
Объявление конструктора явным запрещает только неявное его применение. Для явного создания временного объекта применим любой конструктор
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru