Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
1

explicit конструктор и перегрузки в классе

03.09.2013, 18:07. Показов 1277. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
class Test {
public:
    Test ()                    { printf("Simple constructor\n"); }
    Test (long)                { printf("Long\n"); }
    explicit Test (int)        { printf("Integer\n"); }
    Test (const Test&)            { printf("Copy operation\n"); }
    Test  &operator=(const Test&) { printf("= Operation\n"); return *this; }
};
 
void printt(int n)
{
   cout << n << ": ";
}
int main()
{
   const int i = 0;
   printt(1); Test t1();
   printt(2); Test  t2 = i;
   printt(3); Test  t3(i);
   printt(4); Test  t4 = Test(i);
   printt(5); Test  t5 = (Test) i;
   printt(6); Test  t6 = static_cast<Test>(i);
   return 0;
}
что получаем:

1: 2: Long
3: Integer
4: Integer
5: Integer
6: Integer


почему не

1: Integer
2: Integer
3: Integer
4: Integer
5: Integer
6: Integer
в виду того же explicit'a
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.09.2013, 18:07
Ответы с готовыми решениями:

Целевой explicit конструктор
Добрый день. Есть код struct Foo { explicit Foo() { }

Создать простенький пример кода с использованием explicit в классе
Можете помочь создать простенький пример кода с использованием explicit в классе?

Ошибка перегрузки + в классе
Не понимаю в чём проблема, ошибка возникает во время работы программы, сообщает что продолжается...

По поводу потока и перегрузки оператора вставки в классе
#include &lt;iostream&gt; using namespace std; class three_d { public: int x, y, z; three_d(int a,...

4
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
03.09.2013, 18:10 2
Цитата Сообщение от Raali Посмотреть сообщение
почему не
1-е это прототип функции
2-е из-за explicit у конструктора с принимающего int
1
Неэпический
18106 / 10693 / 2062
Регистрация: 27.09.2012
Сообщений: 26,918
Записей в блоге: 1
03.09.2013, 18:12 3
C++
1
Test t1();
Это функция, а не создание объекта. Уберите скобочки

Добавлено через 1 минуту
Цитата Сообщение от Raali Посмотреть сообщение
Test t2 = i;
Это не явное приведение, поэтому срабатывает конструктор с long
1
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
03.09.2013, 18:12  [ТС] 4
а второе что то не понял, то есть если приведение не явное то explicit не учитывается?
0
Неэпический
18106 / 10693 / 2062
Регистрация: 27.09.2012
Сообщений: 26,918
Записей в блоге: 1
03.09.2013, 18:32 5
Цитата Сообщение от Raali Посмотреть сообщение
а второе что то не понял, то есть если приведение не явное то explicit не учитывается?
В общем гуглите в сторону direct-initialization и copy-initialization, чтобы было понятнее что к чему
1
03.09.2013, 18:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.09.2013, 18:32
Помогаю со студенческими работами здесь

При потсроении пишет что конструктор либо недоступен либо объявлен как explicit
/*Все обьекты содержимые в контейнерах без проблем выводятся через потоковые итераторы и алгоритм...

Конструктор в классе
доброго времени суток у меня есть класс объекта: class door { public: float...

конструктор в классе
написала программу создания объектов в классе с помощью конструктора, но есть ошибки в...

Создать конструктор в классе
Есть вот класс class lengthunit { bool IsCorrect() const; long double Metres; long...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru