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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
Sylar9
134 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,952
Записей в блоге: 1
#1

Ответ на вопрос - C++

17.01.2012, 13:57. Просмотров 1859. Ответов 38
Метки нет (Все метки)

Блин препод задал вопрос не знаю как ответить на него и почему такой ответ?
вот вопрос:
Какой порядок вызова методов/конструкторов?
C++
1
2
3
4
5
6
7
8
9
10
class A {
A();
A(const A&);
A& operator=(const A&);
};
 
void f(){
A a;
A b = (b = a);
}
 Комментарий модератора 
Код выделяем тегами!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2012, 13:57
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ответ на вопрос (C++):

Ответ на вопрос по С++ - C++
определение объединения (union), синтаксис, назначение спасибо

Выводить случайный ответ на заданный вопрос - C++
Здрасьте! Есть небольшая идейка, но я пока не особо шарю в C++. В общем: я ввожу в консоли любой вопрос или просто и символ и в ответ хочу...

Парни помогите, вы все знаете ответ на этот вопрос - C++
Данная программа сравнивает файлы, вопрос такой: данная программа запускается с помощью консоли, чтоб запустить надо ввести в консоли ...

Напишите программу, которая сравнивает ответ пользователя на вопрос с правильным ответом. - C++
Напишите программу, которая сравнивает ответ пользователя на вопрос с правильным ответом.

Вопрос по массивав, "институтский" вопрос. - C++
Готовлюсь к летней сессии по программированию. С++ Есть такая вот задачка (привожу как есть) В документации подобного не...

Почему ответ 0:0:0!!! - C++
#include <iostream> using namespace std; class Time { private: int hour; int min; int sec; public: ...

38
retmas
Жарю без масла
864 / 746 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
18.01.2012, 14:29 #16
Цитата Сообщение от dimcoder Посмотреть сообщение
вызывать одну функцию из другой
вот именно это и происходит
0
dimcoder
Полярный
467 / 440 / 68
Регистрация: 11.09.2011
Сообщений: 1,142
18.01.2012, 14:31 #17
Цитата Сообщение от retmas Посмотреть сообщение
вот именно это и происходит
Вызывающая - ?
Вызываемая - ?
Проясните.
0
retmas
Жарю без масла
864 / 746 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
18.01.2012, 14:34 #18
в operator= вызывается copy_ctor
1
dimcoder
Полярный
467 / 440 / 68
Регистрация: 11.09.2011
Сообщений: 1,142
18.01.2012, 14:42 #19
Цитата Сообщение от retmas Посмотреть сообщение
в operator= вызывается copy_ctor
Где именно в operator= ?
0
HighPredator
5645 / 1962 / 373
Регистрация: 10.12.2010
Сообщений: 5,687
Записей в блоге: 3
18.01.2012, 15:01 #20
dimcoder, может быть так вам более понятно будет:
C++
1
2
X a=b;//работает конструктор копирования
a=b;//работает оператор присваивания
1
retmas
Жарю без масла
864 / 746 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
18.01.2012, 15:01 #21
давайте перепишем
C++
1
A b = (b = a);
в псевдокод:
C++
1
A b.operator=(b.copy_ctor(a));
теперь скажите сами
Цитата Сообщение от dimcoder Посмотреть сообщение
Где именно
1
Mr.X
Эксперт С++
3060 / 1705 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.01.2012, 18:43 #22
Цитата Сообщение от retmas Посмотреть сообщение
вполне defined behavior
Холиварите со стандартом?
0
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
18.01.2012, 19:08 #23
вот меня смущает то что для несконструированной переменной вызывается сначала оператор присваивания, а потом копирующий конструктор, разве это не подозрительно ???
0
kravam
быдлокодер
1705 / 892 / 45
Регистрация: 04.06.2008
Сообщений: 5,524
19.01.2012, 02:22 #24
Да, непонятно. copy_ctor это хорошо, конечно, но его вызывает объект b, который должен сконструироваться прежде. А происходит наоборот.

Добавлено через 7 минут
То есть я понимаю, что
C++
1
Ex b= (b = a);
Транслируется в
C++
1
Ex b(b = a);
Эффект кстати, тот же самый. И я понимаю, что прежде чем объект b сконструируется, в скобках должно что-то произойти. И вот если бы ось выкинула исключение, всё стало бы понятно, действительно b= a при отсутствии первой как-то не очень правильно.
1
retmas
Жарю без масла
864 / 746 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
19.01.2012, 11:52 #25
признаю. я был не прав и сам себя запутал.
это
C++
1
A b = (b = a);
действительно undefined behavior и даже не соответствует псевдокоду
C++
1
A b.operator=(b.copy_ctor(a));

Не по теме:

а так хотелось верить

0
dimcoder
Полярный
467 / 440 / 68
Регистрация: 11.09.2011
Сообщений: 1,142
19.01.2012, 12:18 #26
Цитата Сообщение от retmas Посмотреть сообщение
действительно undefined behavior
Приехали.
Я то уж начал убеждаться, что я не прав.
0
retmas
19.01.2012, 12:30
  #27

Не по теме:

Цитата Сообщение от dimcoder Посмотреть сообщение
Я то уж начал убеждаться
не идите по моему пути

0
lemegeton
2933 / 1362 / 136
Регистрация: 29.11.2010
Сообщений: 2,725
19.01.2012, 14:22 #28
Хм. Получается, что в параметре конструктора можно использовать (вызвать метод или переменную) объект класса имени самого себя, для которого еще не применен конструктор.

Проверьте, кто-нибудь, для VS?

Must be exploitable.
0
dimcoder
Полярный
467 / 440 / 68
Регистрация: 11.09.2011
Сообщений: 1,142
19.01.2012, 14:42 #29
lemegeton, не знаю на счет VS, но LWS
http://liveworkspace.org/code/12f4b437e37ae33c3fb89ff6f420384e

Хотя мой DevCpp хавает.
0
retmas
Жарю без масла
864 / 746 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
19.01.2012, 14:48 #30
Цитата Сообщение от dimcoder Посмотреть сообщение
lemegeton, не знаю на счет VS, но LWS
http://liveworkspace.org/code/12f4b437e37ae33c3fb89ff6f420384e

Хотя мой DevCpp хавает.
просто у вас там b не обьявлена. вот http://liveworkspace.org/code/f3b12ea10b82db4e3d6b4b512ed32afe ворнинг выдает
а здесь уже даже ворнинга нет http://liveworkspace.org/code/4fb6bb96f2e76cdad1e33e605cbf4532
0
19.01.2012, 14:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2012, 14:48
Привет! Вот еще темы с ответами:

Правильный ответ - C++
Помогите найти правильный ответ: 1) What will I see as output if I were to execute the following statements: PriorityQueue...

Проверка на ответ - C++
Ребят, хелп! В общем, взялся за создание теста, по лабам Не выходит php код, чтобы ответ проверялся на странице и оставлял меня на...

Правильный ответ? - C++
Помогите, пожалуйста ответить на такой вопрос: Предположим grade - массив 10 целых чисел, какое из следующих уверждений является...

Правильный ответ? - C++
Доброго всем времени суток! Возникли вопросы, помогитеб пожалуйста: 1) Возможно ли, что member функция класса to activate (call)...


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

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

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