Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
1

class List

19.04.2013, 03:03. Просмотров 498. Ответов 10
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class List
{
private:
    struct LStruct
    {
        LStruct *m_pNext;
        int info;
    };
    LStruct *m_pHead;
public:
    List();//что это делает?
    ~List();// что это делает?
 
                LStruct *p = m_pHead;// 1
        LStruct p1 = *m_pHead;  //2
        p1.m_pNext;  //3
        p->m_pNext;  //4
//
В чем отличие 1 и 4 от 2 и 3 ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2013, 03:03
Ответы с готовыми решениями:

Разъясните код пжлст(выдает ошибку:cannot convert from 'class std::list<class c_bullet *,class std::allocator<class c_bullet *> >::iterator' to 'int')
Есть такие строки: std::list&lt;c_bullet*&gt; Bullets; ... for(auto i =...

Ошибки: 1) use of class template requires template argument list 2) 'T' : undeclared identifier
Решил подправить свой класс с использованием шаблонов, но столкнулся со...

'MyQueue' : use of class template requires template argument list
Написал код про шаблоны. Не могу понять почему выводит ошибку во время...

Работа с class ами. Заполнение дин. массива типа class
Всем доброго времени суток! Это моя первая тема на этом сайте, поэтому если...

Нужно объект типа класс проинициализировать с помощью перегруженного конструктора Class::Class( bool a )
Плиз помогите. Не знал, что я такой чайник.) Итак: есть два класса: ...

10
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
19.04.2013, 03:09 2
Цитата Сообщение от Xsenon_rus Посмотреть сообщение
List();//что это делает?
инициализирует...что-то

Цитата Сообщение от Xsenon_rus Посмотреть сообщение
~List();// что это делает?
деинициализирует...что-то

в 1 копируем лишь указатель. размер указателя 4 байта на 32-х битных платформах.
в 2 копируем сам объект расположенный по указателю. размер вашего объекта 8 байт тоже на 32-х битных платформах.
1
MrGluck
Модератор
Эксперт CЭксперт С++
8088 / 4941 / 1431
Регистрация: 29.11.2010
Сообщений: 13,405
19.04.2013, 03:15 3
Думаю код поможет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
struct Foo
{
    int x;
};
 
int main()
{
    Foo *f1, *f2, f3;
    f1->x = 1;
    f2 = f1;
    f3 = *f1;
    std::cout << f1->x << " " << f2->x << " " << f3.x << std::endl;
    f1->x = 2;
    std::cout << f1->x << " " << f2->x << " " << f3.x << std::endl;
}
1
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
19.04.2013, 03:19  [ТС] 4
Ок, а как вы думаете что он может инициализировать, а потом сразу же деин. ?

Добавлено через 1 минуту
Цитата Сообщение от MrGluck Посмотреть сообщение
Думаю код поможет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
struct Foo
{
    int x;
};
 
int main()
{
    Foo *f1, *f2, f3;
    f1->x = 1;
    f2 = f1;
    f3 = *f1;
    std::cout << f1->x << " " << f2->x << " " << f3.x << std::endl;
    f1->x = 2;
    std::cout << f1->x << " " << f2->x << " " << f3.x << std::endl;
}
Я так понял он должен выводить одно и то же ?
0
MrGluck
Модератор
Эксперт CЭксперт С++
8088 / 4941 / 1431
Регистрация: 29.11.2010
Сообщений: 13,405
19.04.2013, 03:21 5
Цитата Сообщение от Xsenon_rus Посмотреть сообщение
Я так понял он должен выводить одно и то же ?
никому он не должен. В первом случае идет копирование указателя (т.е. f2 ссылается на тот же участок памяти, что и f1), во втором по разыменованному указателю, т.е. по значению.
1
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
19.04.2013, 03:28  [ТС] 6
Я имел в виду здесь:

std::cout << f1->x << " " << f2->x << " " << f3.x << std::endl;
0
MrGluck
Модератор
Эксперт CЭксперт С++
8088 / 4941 / 1431
Регистрация: 29.11.2010
Сообщений: 13,405
19.04.2013, 03:31 7
Xsenon_rus, ваше "здесь" фигурирует в моем примере дважды.
0
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
19.04.2013, 03:35  [ТС] 8
Спасибо дважды за помощь =), но с инициализацией я так и не понял ...

Следующий файл содержит ещё токи строки
C++
1
2
3
4
5
6
7
8
9
10
11
List::List()    // конструктор
{
        List::m_pHead = NULL;
}
 
List::~List()   // деструктор
{
    List::ClearList();
    delete m_pHead;
 
}
Может это как то относиться к моему 1 вопросу ...
0
MrGluck
Модератор
Эксперт CЭксперт С++
8088 / 4941 / 1431
Регистрация: 29.11.2010
Сообщений: 13,405
19.04.2013, 03:41 9
Цитата Сообщение от Xsenon_rus Посмотреть сообщение
но с инициализацией я так и не понял ...
Почитайте про предназначения конструкторов и деструкторов. Первый вызывается при создании объекта, соотв. создает ресурсы и, возможно (желательно) инициализирует их начальным значением, второй эти ресурсы освобождает.

Добавлено через 1 минуту
В вашем примере в конструкторе член m_pHead инициализируется начальным значением NULL, в деструкторе происходит вызов метода ClearList(), затем происходит освобождение памяти, выделенной указателю m_pHead.
1
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
19.04.2013, 03:43  [ТС] 10
Спасибо за помощь. Очень признателен что в столь поздний час, нашлись люди которые мне помогли.
0
anmartex
...
1711 / 1204 / 909
Регистрация: 12.02.2013
Сообщений: 1,978
19.04.2013, 06:38 11
Цитата Сообщение от MrGluck Посмотреть сообщение
Думаю код поможет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
struct Foo
{
    int x;
};
 
int main()
{
    Foo *f1, *f2, f3;
    f1->x = 1;
    f2 = f1;
    f3 = *f1;
    std::cout << f1->x << " " << f2->x << " " << f3.x << std::endl;
    f1->x = 2;
    std::cout << f1->x << " " << f2->x << " " << f3.x << std::endl;
}
Не сочтите, что я придираюсь, но у вас на 11 строчке уже undefined behavior.
0
19.04.2013, 06:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2013, 06:38

Create a programm that creates an object of created class Time and tests the member functions of class
Time Class Create a class called Time that might be used to represent...

enum и class как составляющие другого class
Как организовать ввод enuma с клавиатуры (51-я строка)? Как прикрепить класс...

vector<[class]> in class и перегрузка (ostream)
Доброе всем время суток ) столкнулся с проблемой Есть у меня несколько...


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

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

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