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

Почему не вызывается конструктор копирования? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поменять соседние слова местами http://www.cyberforum.ru/cpp-beginners/thread186801.html
задание: Дано предложение. Вывести его на экран, меняя местами каждые два соседних слова. Никак не могу сообразить что нужно делать, что использовать. уде не 1-й день мучаюсь над этой задачей. подскажите хотя бы алгоритм решения :(
C++ Класс Rectangle совпадает с функцией Rectangle Пишу свой класс Rectangle, который при отрисовки использует функцию Rectangle из GDI. Возникает ошибка из-за того, что имена одинаковые. Но менять имя своего класса я, естественно, не хочу... Как решить противоречие? http://www.cyberforum.ru/cpp-beginners/thread186792.html
C++ Программа со структурами.
Не могли бы Вы помочь мне с написанием этой программы. Описать структуру с именем NOTE, содержащую следующие поля: NAME - фамилия, имя; TEL - номер телефона; BDAY - день рождения (массив из трех чисел). Написать программу, отдельными функциями выполняет следующие действия: • ввод с клавиатуры данных в массив BLOCKNOTE, состоящий из N переменных типа NOTE; • упорядочение записей по...
C++ возврат по ссылкам
На защиту лаб.работы препод требует рассказать о возврате по ссылкам. Зачем они? Как они описываются, какой у них плюс?
C++ упорядочен ли массив по неубыванию, по невозрастанию или не упорядочен вообще http://www.cyberforum.ru/cpp-beginners/thread186787.html
Блин вест мозг себе уже вынес, никак не могу решить задачу(((. Помогите кто чем может. Задача:Написать подпрограмму,которая проверяла бы, упорядочен ли массив по неубыванию (Xi<=Xi+1),по невозрастанию (Xi=>Xi+1) или не упорядочен вообще. привести пример использования подпрограммы.
C++ Интегрирование по методу Симпсона написать программу которая посчитала бы интеграл сos(x+x^3)dx по методу симпсона с точностью до одной тысячной.буду оч.благодарен))) подробнее

Показать сообщение отдельно
kravam
быдлокодер
1691 / 878 / 44
Регистрация: 04.06.2008
Сообщений: 5,423
21.08.2011, 22:35  [ТС]     Почему не вызывается конструктор копирования?
...Возвращаясь к этой теме хочется отметить смешное поведение компилятора g++
Итак, мы договорились, что компилятор умный и не вызывает КК без надобности.
...Итак, все опции по умолчанию. Пишем свой КК- он не вызывается (это обсуждено). Но вот когда мы его убираем, встроенный КК вызывается (А знаю я это откуда? А по адресам смотрю...)! То есть ситуация та же самая- просто тупо скопировать побайтно объект не содержащий никаких указателей ни никакие строки но КК вызывается.
Кроме смеха из этого можно извлечь урок:

если хочешь, чтобы КК не вызывался- НАПИШИ ЕГО.
если хочешь, чтобы КК вызывался- НЕ ПИШИ ЕГО

Именно так, я ничё не придумал. Компилим и смотрим на адреса. А потом расскоментиваем эту строчку
C++
1
kl (kl const & o) {printf ("Вызов КК\n");}
ещё раз компилим и снова смотрим на адреса. Безо всяких опций то есть меняем поведение компилятора на желаемое. Цирк да и только.

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
25
26
27
28
29
30
31
32
33
34
35
36
#include <windows.h>
#include <iostream>
class kl {
 
 private:
         int x;
 
 public:
 //Конструкторы
 kl () {};
 
 
 //Вот эту херь надо то расскомментить, то закомментить, это КК и есть
 //kl (kl const & o) {printf ("Вызов КК\n");}
 
 friend void v (const kl &obekt) {
  printf ("адреса ссылочного аргумента равны %x\n", &obekt);
 } 
 
 kl func ();
};
 
kl kl::func () {
 kl obekt;
 printf ("адреса аргумента типа ima_klassa равны %x\n", &obekt);
 return obekt; 
}
 
int main() {
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 kl obekt;
 v (obekt.func());
 getchar ();
 return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru