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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не могу вызвать функцию из dll С++ в С# в системе Win 7 64bit, MSVS 2008 http://www.cyberforum.ru/cpp-beginners/thread926875.html
Здравствуйте! Уже два дня не могу вызвать функцию из dll C++ в программе, написанная в C#. Программа пишется в MS VS 2008 Win 7 64bit. Сначала опишу С++ проект. Создаю обычное пустое C++ dll...
C++ Коррекция #include <iostream> #include <string> #include <cstring> int main() { using namespace std; char charr; string str; cout << "Lenght of string in charr before input: " << strlen(charr) <<... http://www.cyberforum.ru/cpp-beginners/thread926858.html
Не удается открыть файл *.lib в MSVS2010 C++
Добрый день! Мне удалось устранить ряд ошибок которые я писал в теме. Но теперь "вываливается" другая ошибка: 1>LINK : fatal error LNK1104: не удается открыть файл "Pr1.lib" Пробывал...
Сформировать целочисленную прямоугольную матрицу C++
Сформировать целочисленную прямоугольную матрицу A(m,m) следующего вида: 1 2 3 .. m 0 1 2 .. m-1 0 0 1 .. m-2 . . . . . . . . . . 0 0 0 .. 1
C++ тренировки по с++ http://www.cyberforum.ru/cpp-beginners/thread926830.html
прочитал книгу по С++ всю))) где тренироваться по кодингу??
C++ std::map insert, нужно ли? ifstream input("data.txt"); string tmp; while(getline(input,tmp)) { data d = getData(tmp); login++; pass++; } input.close(); Вот так писал я все время, но внезапно заметил, что... подробнее

Показать сообщение отдельно
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
23.07.2013, 13:05  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
// Вызывается operator void*, затем стандартное преобразование void* -> bool
Это потому что других пользовательских преобразований нет.
Предлагаю посмотреть на такой код и поубирать операторы преобразования по очереди:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
class B
{
public:
    operator bool() { std::cout << "B::bool\n"; return true; } // 1
    operator void*() { std::cout << "B::void*\n"; return NULL; } // 2
    operator bool() const { std::cout << "B::bool const\n"; return true; } // 3
    operator void*() const { std::cout << "B::void* const\n"; return NULL; } // 4     
};
 
int main()
{
    B obj2;
 
    // Вызывается operator bool, если нет, то operator void*, если нет, то operator bool const, если нет, то operator void* const
    if (obj2) { }
 
    return 0;
}
Собственно, в этом случае как раз видно, что преобразование к bool приоритетнее (при одинаковый cv-квалификаторах), чем преобразование к void*

Добавлено через 15 часов 26 минут
Цитата Сообщение от 0x10 Посмотреть сообщение
Поэтому возможен всякий бред в духе int n = std::cin.
Где возможен?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru