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

Копирующий конструктор класса, содержащего переменную-член указатель - C++

Восстановить пароль Регистрация
 
Roof
 Аватар для Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
23.08.2011, 08:40     Копирующий конструктор класса, содержащего переменную-член указатель #1
Практикуюсь по книге Стенли Липпмана "Язык программирования C++ вводный курс" 4 изд.
Упражнение 13.4. Используя приведенный ниже набросок класса, напишите конструктор копий, который копирует все его элементы. Скопируйте объект, на который указывает указатель pstring, а не сам указатель.

Вот как я реализовал данное упражнение:

no_name.h
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
#ifndef NONAME_H_
#define NONAME_H_
 
#include <string>
 
struct no_name {
    //стандартный конструктор
    no_name() : pstring( new std::string("999") ), i( 0 ), d( 0 ) {
 
    }
 
    //копирующий конструктор
    no_name(const no_name & src) : pstring( new std::string( *( src.pstring ) ) ), i( src.i ), d( src.d ) {
 
    }
 
 
private:
    std::string *pstring;
    int i;
    double d;
};
 
#endif /* NONAME_H_ */
test_struct_no_name

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include "noname.h"
using namespace std;
 
int main() {
    no_name nn;
    no_name nn2( nn );
    cout << "" << endl; // prints 
    return 0;
}
Проверял через отладчик, указатели объектов nn и nn2 содержат разные адреса и по этим адресам находятся одинаковые значения "999".


Возникли следующие вопросы:
- приемлем ли мой вариант копирующего конструктора?
- если приемлем, то можно ли упростить выражение
C++
1
pstring( new std::string( *( src.pstring ) ) )
?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2011, 08:40     Копирующий конструктор класса, содержащего переменную-член указатель
Посмотрите здесь:

Указатель на функцию - член класса. C++
Указатель на классы, объявленный как член класса C++
Конструктор класса, содержащего только статические члены C++
C++ std::bind и указатель на статическую функцию член класса
Указатель на ф-цию член класса C++
C++ Std::thread, создать указатель на член класса
C++ Указатель на член структуры/класса
Указатель на функцию-член класса C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт C++
1004 / 783 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
23.08.2011, 08:53     Копирующий конструктор класса, содержащего переменную-член указатель #2
Пока криминала не обнаружено. Копирующий конструктор он жеж создает КОПИЮ исходного объекта. То есть значения полей должны быть одинаковы (указатели - разные, как и положено).
Roof
 Аватар для Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
23.08.2011, 09:03  [ТС]     Копирующий конструктор класса, содержащего переменную-член указатель #3
ValeryLaptev, спасибо за комментарий.
То есть значения полей должны быть одинаковы (указатели - разные, как и положено).
Это я понимаю, к этому и стремился, но были сомнения в правильности выбранного метода.
Yandex
Объявления
23.08.2011, 09:03     Копирующий конструктор класса, содержащего переменную-член указатель
Ответ Создать тему
Опции темы

Текущее время: 16:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru