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

Ребят, уже запарился, гляньте, что не так!? конструктор копирования и оператор присваивания - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ простые числа! http://www.cyberforum.ru/cpp-beginners/thread964719.html
Определить т простые числа, которые являются палиндромами (одинаково записываются как слева направо, так и справа налево). только программку не с cout,a c printf и с комментариями)
C++ Нужен-ли assembler C++ программисту? Вчера с друзьями спорили, нужен-ли assembler современному программисту (не микроконтроллеров и т.п). Вот я пишу на С++, асемблер не учил и спокойно работаю без него. И когда я работаю с памятью, то знаю, что память выделяется где-то в куче, либо в стеке. По идее мне больше и не нужно знать. Друзья говорят, что асемблер нужен для понимания, но вот для понимания чего, так никто толком не сказал http://www.cyberforum.ru/cpp-beginners/thread964709.html
Вывести на экран числа в виде следующей таблицы: C++
Вывести на экран числа в виде следующей таблицы: 2 2 2 2 2 3 4 5 6 7 2 2 2 2 2 3 4 5 2 2 2 1 2 3 2 2 0 1 2
Распечатать все палиндромы с++ C++
Задана строка из символов Строка из не более чем 255 символов. Использовать для ввода стркоки ф-ию Gets(s), затем распечатать палиндромы их этой строки(читается одинаково слева направо и справа налево).
C++ Вычисление определителей матрицы и ее ранга http://www.cyberforum.ru/cpp-beginners/thread964676.html
разработка программы вычисления определителей матрицы и ее ранга
C++ операторы if и else C++ Здравствуйте! в данный момент изучаю операторы ИФ и ЭЛС в С++ сам придумал программу, сам написал и сам наделал ошибок! ))) помогите разобраться! почему программа не работает? #include <iostream.h> #include <stdio.h> using namespace std; int main() { string YourName; подробнее

Показать сообщение отдельно
bayanist17
0 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 10
29.09.2013, 11:46  [ТС]     Ребят, уже запарился, гляньте, что не так!? конструктор копирования и оператор присваивания
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#include <iostream>
using namespace std;
 
 
struct SNode {
      SNode*next;
      int val;
      SNode(){ next = NULL; val = 0;};
      SNode(SNode* ne,int a){val=a; next=ne;}
     
};
 
 
class SList
 {
  SNode* head;
  SNode* tail;
    public:
    SList();
    SList(int);
    SList(const SList&); //конструктор копирования
    ~SList();
 
    bool is_empty();
    void add_front(int);
    int remove_front();
    bool find(int);
    int get_nth(int);
    int size();
    void print_slist();
 
  SList& operator=(const SList&); //оператор присваивания
};
SList::SList(){
    head=new SNode();
    tail=head;
}
SList::SList(int a){
    tail=new SNode();
    head=new SNode(tail,a);
}
//+++++++++++++++++++++++++++++
  SList::SList(const SList& t) {
  
while(t.head!=t.tail)
    {
                    //head=t.head;
                //head=head->next;
                head=new SNode(head,t.head->val);
        }
   tail = t.tail;
 
   }
 //++++++++++++++++++++++++++++++
bool SList::is_empty(){
    return (head==tail)?true:false;
}
void SList::add_front(int a){
    SNode *q=head;
    head=new SNode(q,a);
}
int SList::remove_front(){
    SNode* q=head;
    head=head->next;
    int a=q->val;
    delete q;
    return a;
}
bool SList::find(int a){
    SNode* q=head;
    while(q!=tail)
    {
        if(q->val==a)
            return true;
        else
            q=q->next;
    }
    return false;
}
int SList::get_nth(int a){
    SNode* q=this->head;
    for(int i=0;i<a;i++)
        q=q->next;
    return q->val;
}
int SList::size(){
    SNode *q=head;
    int k=0;
    for(;q!=tail;q=q->next,k++)
        ;
    return k;
}
void SList::print_slist()
{
    int size=this->size();
    for(int i=0;i<size;i++)
    {
        cout<<this->get_nth(i)<<' ';
    }
    cout<<endl;
}
SList::~SList(){
        while(head!=tail)
    {
        SNode* p=head;
        head=head->next;
        delete p;
    }
    delete tail;
}
//*************************************
SList& SList::operator=(const SList& t)  {
        // защита от неправильного самоприсваивания
    if (this == & t) return *this;
    else{
        // освобождаем старую память
    while(head!=tail)
    {
        SNode* p=head;
        head=head->next;
        delete p;
    }
    delete tail;
 
    // присваиваем значения в новой памяти объекту
while(t.head!=t.tail)
    {
                    head=t.head;
                //head=head->next;
                head=new SNode(head,t.head->val);
        }
   tail = t.tail;
  return *this; }
   }
//***************************************************
 
int _tmain(int argc, _TCHAR* argv[])
{
 
    SList L1;
L1.add_front(5);
L1.add_front(9);
L1.add_front(34);
    SList L2;
L2.add_front(25);
L1.print_slist();
L2.print_slist();
 
cout<<"posle = "<<endl;
    L1=L2; // вот тут проблемно
 
L1.print_slist();
L2.print_slist();
 
 
system("pause");
    return 0;
}
 
Текущее время: 02:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru