Форум программистов, компьютерный форум 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, 18:12     Почему не вызывается конструктор копирования?
Цитата Сообщение от kravam Посмотреть сообщение
Сыроежка, с тем разобрались уже, я по запарке думал что написан КК, а там просто функция, использующая КК.
Да и вообще со всем разобрались; но я не мог не отметить один факт, обнаруженный вчера, повторю его:
если хочешь, чтобы КК не вызывался- НАПИШИ ЕГО.
если хочешь, чтобы КК вызывался- НЕ ПИШИ ЕГО

И ниже я описал пример и компилятор с таким поведением.
Нет, это вы что-то фантазируете. Бывают случаи, когда для оптимизации конструктор копирования опускается и вызывается обычный конструктор.

Например,

C++
1
2
3
4
5
6
7
8
9
10
11
struct A
{
   A( int i ) :x( i ) {}
   A( const A &rhs ) : x( rhs.x ) {}
   int x;
};
 
int main()
{
   A a = 10;
}
В этом случае сначала должен вызываться конструктор с параметром для создания временного объекта типа A, а затем конструктор копирования для копирования этого временного объекта переменной 'a'.. НО компилятор может упростить работу и сразу же вызвать конструктор с параметром для переменной 'a'.

Но при этом все равно проверяется доступность конструктора копирования. То есть если вы, например, объявите конструктор копирования как private, код не будет компилироваться, даже если вызов конструктора копирования компилятором пропускается для оптимизации кода.
 
Текущее время: 15:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru