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

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

Войти
Регистрация
Восстановить пароль
 
Stason676
Заблокирован
#1

Непонятки с конструктором копирования - C++

13.06.2014, 04:10. Просмотров 238. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Table
{
    Row* p;
    size_t size;
public:
    Table(int i = 0)
    {
        p = new Row[i];
        size = i;
    }
    Table(const Table& t)
    {
        p = new Row[size = t.size];     //Если заменить на
                                        //p = new Row[size = t.GetSize()]
    }                                   //не работат, почему?
 
    size_t GetSize() { return size; }
};
Господа доброго времени суток, есть вопрос в, он в коментарии, прошу помощи. Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2014, 04:10     Непонятки с конструктором копирования
Посмотрите здесь:

Присваивание конструктором копирования - C++
Всем форумчанам привет. Я совсем недавно изучаю с++. Помогите плиз понять. К примеру вот такой код: #include <iostream.h> int...

Проблеммка с конструктором копирования - C++
В общем суть: /*Создать класс - одномерный массив целых чисел (вектор). Функции-члены обращаются к отдельному элементу массива, вывода...

Шаблон с конструктором копирования - C++
Найдите периметр и площадь выпуклого многоугольника. Распределение памяти для хранения массивов должно осуществляться динамически(в...

Ошибка с конструктором копирования - C++
В коде в строках 59 и 60 компилятор выдает ошибку:#include<iostream> #include<conio.h> using namespace std; class...

Не получается разобраться с конструктором копирования - C++
Вот начала разбираться с конструктором копирования. но я чёт запуталась с ним. Можете помочь? #ifndef PEOPLE_H #define PEOPLE_H ...

Скопировать массив конструктором копирования - C++
Можете привести пример как скопировать массив конструктором копирования.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.06.2014, 04:52     Непонятки с конструктором копирования #2
C++
1
2
const size_t GetSize() const
{ return size; }
Stason676
Заблокирован
13.06.2014, 19:26  [ТС]     Непонятки с конструктором копирования #3
Спасибо, с const в принципе понятно, но еще созрел вопрос, почему можно обратиться к закрытому полю size объекта t?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.06.2014, 19:31     Непонятки с конструктором копирования #4
Мотоды класса и дружественные функции имеют доступ.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
13.06.2014, 20:16     Непонятки с конструктором копирования #5
Цитата Сообщение от Stason676 Посмотреть сообщение
почему можно обратиться к закрытому полю size объекта t?
Тут надо понимать, что закрытость она для других классов, а не для других объектов такого же класса. Если бы нельзя было получить доступ к приватным полям объекта, отличного от this, как бы тогда сделали, например, копирующий конструктор?
Trwsdf
Заблокирован
13.06.2014, 20:20     Непонятки с конструктором копирования #6
Тебе неправильно ответили "эксперты"
На самом деле причина в том, что в конструкторе модификатор const Table& - константный объект, который позволяет вызывать только константные функции имеющие указатель const this. GetSize() -неконстантная - в итоге либо сделать ее константной , либо убрать const в конструкторе.
Второе ниже, возвращаемое значение const в функции (первый const) ставить необязательно - будет VLA массив (C99).
C++
1
2
const size_t GetSize() const
{ return size; }
Третье, классы дружественны к своим объектам.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2014, 20:24     Непонятки с конструктором копирования
Еще ссылки по теме:

Нюансы работы с конструктором копирования: найти и исправить ошибки в коде - C++
Доброго дня! Разбирал тему "Конструктор копирования". Сделал самостоятельно наглядную программу, но она по результатам отличается от той,...

Конструктор копирования кидает исключение, если копируют объект, созданные дефолтным конструктором - C++
Привет! Вопрос из области философии - наткнулся на такое поведение при работе с IBPP (С++ клиент для работы с Firebird. Firebird - это...

Работа с конструктором - C++
Доброго времени суток. Обращаюсь к вам с двумя проблемами. Во-первых, Code Blocks выдаёт у меня ошибку multiple definition. Связано ли...

Трабла с конструктором - C++
Компилятор никаких ошибок не выдает, но программа не запускается. using namespace std; class Cpmv { public: struct Info ...


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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
13.06.2014, 20:24     Непонятки с конструктором копирования #7
Цитата Сообщение от Trwsdf Посмотреть сообщение
Тебе неправильно ответили.
В каком месте?
Цитата Сообщение от Trwsdf Посмотреть сообщение
будет VLA массив (C99).
Это вообще о чем?
Yandex
Объявления
13.06.2014, 20:24     Непонятки с конструктором копирования
Ответ Создать тему
Опции темы

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