Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Raali
639 / 343 / 74
Регистрация: 06.07.2013
Сообщений: 1,107
Завершенные тесты: 1
#1

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

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

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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.09.2013, 18:07
Ответы с готовыми решениями:

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

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

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

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

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

4
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
03.09.2013, 18:10 #2
Цитата Сообщение от Raali Посмотреть сообщение
почему не
1-е это прототип функции
2-е из-за explicit у конструктора с принимающего int
1
Croessmah
++Ͻ
14489 / 8270 / 1553
Регистрация: 27.09.2012
Сообщений: 20,312
Записей в блоге: 3
Завершенные тесты: 1
03.09.2013, 18:12 #3
C++
1
Test t1();
Это функция, а не создание объекта. Уберите скобочки

Добавлено через 1 минуту
Цитата Сообщение от Raali Посмотреть сообщение
Test t2 = i;
Это не явное приведение, поэтому срабатывает конструктор с long
1
Raali
639 / 343 / 74
Регистрация: 06.07.2013
Сообщений: 1,107
Завершенные тесты: 1
03.09.2013, 18:12  [ТС] #4
а второе что то не понял, то есть если приведение не явное то explicit не учитывается?
0
Croessmah
++Ͻ
14489 / 8270 / 1553
Регистрация: 27.09.2012
Сообщений: 20,312
Записей в блоге: 3
Завершенные тесты: 1
03.09.2013, 18:32 #5
Цитата Сообщение от Raali Посмотреть сообщение
а второе что то не понял, то есть если приведение не явное то explicit не учитывается?
В общем гуглите в сторону direct-initialization и copy-initialization, чтобы было понятнее что к чему
1
03.09.2013, 18:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2013, 18:32

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

Конструктор и деструктор в классе
Решил разобраться в конструкторах и деструкторах. Написал, вроде по такой же...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru