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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Поменять соседние слова местами http://www.cyberforum.ru/cpp-beginners/thread186801.html
задание: Дано предложение. Вывести его на экран, меняя местами каждые два соседних слова. Никак не могу сообразить что нужно делать, что использовать. уде не 1-й день мучаюсь над этой задачей. подскажите хотя бы алгоритм решения :(
C++ Программа со структурами. Не могли бы Вы помочь мне с написанием этой программы. Описать структуру с именем NOTE, содержащую следующие поля: NAME - фамилия, имя; TEL - номер телефона; BDAY - день рождения (массив из трех чисел). Написать программу, отдельными функциями выполняет следующие действия: • ввод с клавиатуры данных в массив BLOCKNOTE, состоящий из N переменных типа NOTE; • упорядочение записей по... http://www.cyberforum.ru/cpp-beginners/thread186790.html
C++ возврат по ссылкам
На защиту лаб.работы препод требует рассказать о возврате по ссылкам. Зачем они? Как они описываются, какой у них плюс?
упорядочен ли массив по неубыванию, по невозрастанию или не упорядочен вообще C++
Блин вест мозг себе уже вынес, никак не могу решить задачу(((. Помогите кто чем может. Задача:Написать подпрограмму,которая проверяла бы, упорядочен ли массив по неубыванию (Xi<=Xi+1),по невозрастанию (Xi=>Xi+1) или не упорядочен вообще. привести пример использования подпрограммы.
C++ Интегрирование по методу Симпсона http://www.cyberforum.ru/cpp-beginners/thread186785.html
написать программу которая посчитала бы интеграл сos(x+x^3)dx по методу симпсона с точностью до одной тысячной.буду оч.благодарен)))
C++ getline по 2 раза Привет. Почему в MSVC, если написать один раз getline(std::cin, path); то ввод не происходит? приходится писать 2 раза case 9: { std::string path(""); std::cout << "Введите имя файла: "; getline(std::cin, path); getline(std::cin, path); loadUFromFile(currGeneration, ROW,COL, path); break; подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
22.08.2011, 17:04     Почему не вызывается конструктор копирования?
Цитата Сообщение от kravam Посмотреть сообщение
...У меня в книге описаны случаи при которых вызывается конструктор копирования. Один из этих случаев:

: "Когда аргумент имеет тип класса. Создаётся копия аргумента и затем передаётся в функцию"

Ну-с попробуем смоделировать такую ситуацию:
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 <iostream>
using namespace std;
 
class baze {
public:
 
 //Конструктр объекта класса baze, заданный по умолчанию
 baze () {printf ("wwwww\n");};
 
 //Эта функция, которая принимает ссыочный аргумент. Следовательно, при её вызове ДОЛЖЕН 
 //вызваться конструктр копирования
 void funktsia(const baze &other){
  printf ("lllll\n");
 }
 
 //А вот и сам конструктр копирования. Он иногда должен вызываться. Где- см. ниже 
 baze (const baze &src) {
  printf ("rrrrr\n");
 }
 
};
 
int main() {
 
 baze f;
 
 //В это месте должен вызываться конструктор копирования, ибо функция funktsia() принимает
 //ссылочный аргумент. Тычем на исполнение и ждём появления строчки "rrrrr"
 f.funktsia(f);
 
 //Но наблюдаем всего лишь "wwwww" (создался объект класса baze) и "lllll" (вызвана функция
 //funktsia () Как она приняла аргумент- для меня до сих пор загадка.)
 //Конструктор копирования не вызван. ПОчему?
 getchar ();
 return 0;
}
Добавлено через 2 минуты
Спасибо заранее
Никакой конструктор-копирования в вашем примере не должен вызываться, так как параметром вашей функции является константная ссылка на объект. То есть никакого нового объекта вы не создаете.
 
Текущее время: 05:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru