Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Копирующий конструктор

1.9K
29 марта 2005 года
solovey
113 / / 25.07.2004
Имеется класс
Код:
struct Puzzle
{
    char Map[5][5];
    bool hasFinalConf;
    int blankX;
    int blankY;
    int number;

    Puzzle(char puzzle[5][6],int n);
    Puzzle(const Puzzle& Original);//пока не реализован
    void DoMoving(char sequence[]);
    void print();
};

Вопрос: надо ли в нем переопределять конструктор копирования Puzzle(const Puzzle& Original);?
302
29 марта 2005 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by solovey
Имеется класс
Код:
struct Puzzle
{
    char Map[5][5];
    bool hasFinalConf;
    int blankX;
    int blankY;
    int number;

    Puzzle(char puzzle[5][6],int n);
    Puzzle(const Puzzle& Original);//пока не реализован
    void DoMoving(char sequence[]);
    void print();
};

Вопрос: надо ли в нем переопределять конструктор копирования Puzzle(const Puzzle& Original);?


Надо. Так как, в конечном счете, Map у обоих экземпляров класса будут ссылаться на одну и ту же область памяти.

301
29 марта 2005 года
lord Kelvin
897 / / 08.11.2004
Цитата:
Originally posted by Sagittarius
Надо. Так как, в конечном счете, Map у обоих экземпляров класса будут [color=RED]ссылаться на одну и ту же область памяти.[/color]


Что нежелательно.

7.2K
29 марта 2005 года
Mongoose
32 / / 23.09.2004
Цитата:
Originally posted by solovey
Имеется класс
 
Код:
struct Puzzle
{
  char Map[5][5];
  ...
};

Вопрос: надо ли в нем переопределять конструктор копирования Puzzle(const Puzzle& Original);?

При желании. Класс не содержит указателей, поэтому никакого указания на один и тот же участок памяти не будет.

1.9K
29 марта 2005 года
solovey
113 / / 25.07.2004
Цитата:
Originally posted by Mongoose
При желании. Класс не содержит указателей, поэтому никакого указания на один и тот же участок памяти не будет.


 
Код:
char Map[5][5]

Разве Map не будет char ** ?
7.2K
29 марта 2005 года
Mongoose
32 / / 23.09.2004
Цитата:
Originally posted by solovey
 
Код:
char Map[5][5]

Разве Map не будет char ** ?

Нет. Это в конечном счете char[25], точнее char[5][5];

Код:
struct Puzzle
{
    char map[5][5];
    bool hasFinalConf;
    int blankX;
    int blankY;
    int number;
};
Puzzle a;
Puzzle b;

strcpy(a.map[0],"aaaa");
MessageBox(a.map[0], "a.map[0]");
b = a;
MessageBox(b.map[0], "b.map[0]");
strcpy(b.map[0],"bbbb");
MessageBox(b.map[0], "b.map[0]");
MessageBox(a.map[0], "a.map[0]");
1.9K
29 марта 2005 года
solovey
113 / / 25.07.2004
Цитата:
Originally posted by Mongoose
Нет. Это в конечном счете char[25], точнее char[5][5];
Код:
struct Puzzle
{
    char map[5][5];
    bool hasFinalConf;
    int blankX;
    int blankY;
    int number;
};
Puzzle a;
Puzzle b;

strcpy(a.map[0],"aaaa");
MessageBox(a.map[0], "a.map[0]");
b = a;
MessageBox(b.map[0], "b.map[0]");
strcpy(b.map[0],"bbbb");
MessageBox(b.map[0], "b.map[0]");
MessageBox(a.map[0], "a.map[0]");



спасибо большое :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог