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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,061
Завершенные тесты: 1
#1

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

03.09.2013, 18:07. Просмотров 562. Ответов 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 конструктор и перегрузки в классе (C++):

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

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

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

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

Конструктор в классе - C++
доброго времени суток у меня есть класс объекта: class door { public: float sqaredoor (); //функция расчета площади...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
03.09.2013, 18:10 #2
Цитата Сообщение от Raali Посмотреть сообщение
почему не
1-е это прототип функции
2-е из-за explicit у конструктора с принимающего int
1
Croessmah
Эксперт CЭксперт С++
13221 / 7493 / 845
Регистрация: 27.09.2012
Сообщений: 18,412
Записей в блоге: 3
Завершенные тесты: 1
03.09.2013, 18:12 #3
C++
1
Test t1();
Это функция, а не создание объекта. Уберите скобочки

Добавлено через 1 минуту
Цитата Сообщение от Raali Посмотреть сообщение
Test t2 = i;
Это не явное приведение, поэтому срабатывает конструктор с long
1
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,061
Завершенные тесты: 1
03.09.2013, 18:12  [ТС] #4
а второе что то не понял, то есть если приведение не явное то explicit не учитывается?
0
Croessmah
Эксперт CЭксперт С++
13221 / 7493 / 845
Регистрация: 27.09.2012
Сообщений: 18,412
Записей в блоге: 3
Завершенные тесты: 1
03.09.2013, 18:32 #5
Цитата Сообщение от Raali Посмотреть сообщение
а второе что то не понял, то есть если приведение не явное то explicit не учитывается?
В общем гуглите в сторону direct-initialization и copy-initialization, чтобы было понятнее что к чему
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2013, 18:32
Привет! Вот еще темы с ответами:

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

Конструктор и деструктор в классе - C++
Решил разобраться в конструкторах и деструкторах. Написал, вроде по такой же структуре как и в учебнике. А комп выдает ошибки в компиляции,...

Конструктор в производном классе - C++
Всем доброго времени суток! есть класс Строка (CStr) class CStr { protected: int length; char *str; public: CStr(); ...

Шаблонный конструктор в шаблонном классе - C++
Не получается определить этот конструктор. Класс шаблонный и еще конструктор тоже шаблонный Подскажите как правильно сделать ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.09.2013, 18:32
Ответ Создать тему
Опции темы

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