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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
xbifx
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 37
#1

Конструктор копирования - C++

14.01.2012, 02:45. Просмотров 1303. Ответов 2
Метки нет (Все метки)

Помогите пожалуйста разобраться, необходимо добавить конструктор копирования, теорию знаю, а как на практике применить не знаю.
Программа вот - http://zalil.ru/32492444.

Добавлено через 33 минуты
вот нужный отрывок

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
37
38
39
40
41
42
43
44
45
46
class List 
{
     struct Elem 
     {
        int x;
        int y;
        int v;
        Elem *next;
      }; 
      
private:
   
   Elem *head, *end;
   int Find(int i, int j);
 
public:
   List();
   ~List();
   void Add(int i, int j, int value);
   void Remove(int i, int j);
   int Get(int i, int j);
   void Clear();
};
 
class Matr 
{
private:
       List *CL;
 
public:
       Matr()
       {
            N = 10;
            M = 10;
            CL = new List;
       }
       Matr(int _N, int _M)
       {
            N = _N;
            M = _M;
            CL = new List;
       }
       ~Matr()
       {
            delete CL;
       }
 Комментарий модератора 
Используйте теги форматирования кода!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2012, 02:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Конструктор копирования (C++):

Не могу сделать чтобы класс содержал основной конструктор и конструктор копирования - C++
Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Класс...

Не могу правильно сделать конструктор и конструктор копирования и принадлежность точки с заданными координатами треугольнику - C++
#include "stdafx.h" #include <iostream> #include <conio.h> #include <windows.h> #include <math.h> #include <algorithm> using...

Конструктор инициализации, конструктор копирования, деструктор - C++
Я сделал почти задание по перегрузке операторов. Осталось одно, тоесть три: конструктор инициализации, конструктор копирования, деструктор....

Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор - C++
Всем доброго времени суток! нужна ваша помощь! нужно создать класс вектор и реализовать конструктор по умолчанию, копирования и...

Конструктор копирования в c++ - C++
Добрый день, такая задача по с++ Какая ошибка в следующей реализации конструктора копирования по умолчанию и деструктора?? Какой еще...

Конструктор копирования - C++
class alpha { public: alpha(alpha& a) { //код } }; Подскажите, почему компилятор ругается если я пытаюсь передать...

2
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
14.01.2012, 02:49 #2
Я несколько обескуражен. Похоже, в коде матрица на базе односвязного списка.

Пример коструктора копирования
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
#include <cstring>
#include <iostream>
 
class String {
 public:
  String(const char *string)
    : string_(strcpy(new char[strlen(string) + 1], string)) {}
  // copy constructor
  String(const String &string)
    : string_(strcpy(new char[string.size() + 1], string.cstr())) {}
  virtual ~String() {
    delete [] string_;
  }
  String &operator=(const String &other) {
    if (this != &other) {
      delete [] string_;
      string_ = strcpy(new char[other.size() + 1], other.cstr());
    }
    return *this;
  }
  const char *cstr() const { return string_; }
  size_t size() const { return strlen(string_); }
 private:
  char *string_;
};
 
int main(int argc, char *argv[]) {
  String a = "This is a string.";
  String b(a); // copy constructor
  a = "This is another string.";
  std::cout << "a: " << a.cstr() << std::endl;
  std::cout << "b: " << b.cstr() << std::endl;
}
1
xbifx
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 37
14.01.2012, 09:56  [ТС] #3
Да, верно, разряженная матрица, односвязный список.
Просто если по идее применять КК к классу Matr, то есть матрицы, должно осуществляться копирование матрицы так? Просто на этом примере все просто, а вот как матрицу скопировать не понимаю..

Добавлено через 59 минут
C++
1
2
3
4
5
6
7
8
9
10
Matr::Matr(Matr const &nw)
{
    int one=0;
    for(int i = 0; i < N;i++)
        for(int j = 0; j < M;j++)
        {
               one=nw.Get(i,j);
               Add(i, j, one);
        }
}
написал вот такой конструктор, только он почему то отказывается копировать..
вызываю с помощью Matr A(MM); A - новая матрица, MM - имеющаяся.

Добавлено через 5 часов 58 минут
помогите пожалуйста, срочно надо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2012, 09:56
Привет! Вот еще темы с ответами:

Конструктор копирования - C++
Здравствуйте) объясните пожалуйста в чём проблема при описании в классе конструктора копирования компилятор выдаёт ошибку:error C3699:...

Конструктор копирования - C++
#include &lt;iostream&gt; using namespace std; class test { public: int x; test(int num); test(const...

Конструктор копирования - C++
Добрый вечер. Начал изучать перегрузку операций и конструктор копирования. Лазил в инете и налепил такой код. Только вот не могу понять как...

Конструктор копирования - C++
Всем привет. У меня такая проблема: есть некий класс, допустим Test: class Test { protected: int value; ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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