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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ матрица http://www.cyberforum.ru/cpp-beginners/thread175171.html
Дана целочисленная прямоугольная матрица.Определить: 1)Количество строк ,не содержащих ни одного нулевого элемента. 2) Максимальное из чисел, встречающихся в заданной матрице более одного раза
C++ последовательность из 10 случайных чисел Написать программу которая генерирует последовательность из 10 случайных чисел, в диапозоне от 1 до 10. Выводит эти чисола на экран и вычисляет их среденее арифметическое. #include <iostream> #include <cstdlib> #include <ctime> using namespace std; void main() { http://www.cyberforum.ru/cpp-beginners/thread175159.html
C++ определить положение точки как это сделать?
Дали задание и совсем не представляю как его делать, может кто нибудь подскажет или направит с чего начать... Вот задание:определить положение точки M(x,y) относительно заштрихованной фигуры
C++ Умножение матриц
Вычислить: q = min(2*MA*MB) где MA, MB – матрицы размером N1xN2. Числа N1 и N2 задаются пользователем в начале работы программы. Все элементы матриц заполнить случайными целыми числами в диапазоне . Программу напишите пожалуйста как можно проще.
C++ поиск корня методом касательных http://www.cyberforum.ru/cpp-beginners/thread175136.html
Задача: найти корень уравнения, используя метод касательных. Точность e=0.0001 (в принципе она не нужна, так как я ввожу ее самостоятельно); x принадлежит промежутку (те a и b, тоже ввожу их самостоятельно). Вроде алгоритм правильный, но сумма - нуль и колоссальное число итераций n Код: // óòî÷íåíèå êîðíåé ìåòîäîì êàñàòåëüíûõ. #include <conio.h> #include <stdio.h> #include <cmath> using...
C++ классы нужно разобратся с перегрузками и класами задача для класса А, компонентай-данным которого является пара целых чисел, создать несколько обьектов(например, A a(1,3), b(3,1)). реализовать для обьектов данного класса перегрузку операции += (a+=b) используя внешнюю по отнашению к классу функцию перегрузки. если можно, нужен исходник по проще, и с коментариями. через неделю здавать а нифига в этом... подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
31.10.2010, 16:29     оператор присваивания
Ты описал пункт 1, 2 и 3. Я предлагаю обратиться к пункту 0 или даже -1

...Что происходит ДО выполнения этих трёх пунктов? Много чего. Но меня интересует
f3=f1.add(f2)

Ты ведь согласишься, что f1=f2+ f3 подменяется f3=f1.add(f2)?

А теперь смотри, итак add(f2)
В функцию add передаётся параметром объект f2.

Вопрос: должен ПРИ ЭТОМ вызываться конструктор копирования?
Ответ: да должен. За доказательсвтом лезем в книгу и читаем:
"Ниже представлены ситуации, в которых конструктор копирования вызывается автоматически:
1) ПРопускаем эту ситуацию
2) Когда аргумент имеет тип класса. Создаётся копия аргумента и затем передаётся в функцию"

Второй пункт это наша ситуация. Я хочу воочию убедиться, что конструктор копирования действительно вызван.

Для этого я задаюсь вопросом: а какой именно конструктор копирования? А вот этот:
C++
1
2
3
    FloatFraction(const FloatFraction &src) {
     set(src.get_num(), src.get_den());
    }
Ведь посмотри,
1) у него принимаемый аргумент имеет тип const FloatFraction &src (это соответствет f2

2) Этот конструктор "принадлежит" классу FloatFraction. Это как раз наша ситуация, ведь вся эта херь add(f2) "принадлежит" объекту класса FloatFraction- объекту f1. Действительно: f3=f1.add(f2)

Ну то есть есть все основания, что ПРЕЖДЕ ЧЕМ выполнятся пункты, о которых ты сказал, вызовется вышеупомянутый конструктор копирования.
Для того, чтобы в этом убедиться, как я уже сказал, пишем так:
C++
1
2
3
4
    FloatFraction(const FloatFraction &src) {
     printf ("ttttttttttttttt\n");
     set(src.get_num(), src.get_den());
    }
Ну и всё. Сидим, ждём появления строчки "ttttttttttttttttt". А её нет.
Где ошибка в рассуждениях?

Добавлено через 3 минуты
Цитата Сообщение от Lotles Посмотреть сообщение
вы перепутали, не FloatFraction, а ProperFraction
Так не пойдёт, я ничё не перепутал. Смотри свой первый код, там и намёка нет на ProperFraction
 
Текущее время: 07:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru