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

class List

19.04.2013, 03:03. Просмотров 663. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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 = Bullets.begin(); 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
Всем доброго времени суток! Это моя первая тема на этом сайте, поэтому если что извините меня (за...

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

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

в 1 копируем лишь указатель. размер указателя 4 байта на 32-х битных платформах.
в 2 копируем сам объект расположенный по указателю. размер вашего объекта 8 байт тоже на 32-х битных платформах.
1
Форумчанин
Эксперт CЭксперт С++
8159 / 5007 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
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
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
Форумчанин
Эксперт CЭксперт С++
8159 / 5007 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
19.04.2013, 03:21 5
Цитата Сообщение от Xsenon_rus Посмотреть сообщение
Я так понял он должен выводить одно и то же ?
никому он не должен. В первом случае идет копирование указателя (т.е. f2 ссылается на тот же участок памяти, что и f1), во втором по разыменованному указателю, т.е. по значению.
1
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
19.04.2013, 03:28  [ТС] 6
Я имел в виду здесь:

std::cout << f1->x << " " << f2->x << " " << f3.x << std::endl;
0
Форумчанин
Эксперт CЭксперт С++
8159 / 5007 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
19.04.2013, 03:31 7
Xsenon_rus, ваше "здесь" фигурирует в моем примере дважды.
0
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
Форумчанин
Эксперт CЭксперт С++
8159 / 5007 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
19.04.2013, 03:41 9
Цитата Сообщение от Xsenon_rus Посмотреть сообщение
но с инициализацией я так и не понял ...
Почитайте про предназначения конструкторов и деструкторов. Первый вызывается при создании объекта, соотв. создает ресурсы и, возможно (желательно) инициализирует их начальным значением, второй эти ресурсы освобождает.

Добавлено через 1 минуту
В вашем примере в конструкторе член m_pHead инициализируется начальным значением NULL, в деструкторе происходит вызов метода ClearList(), затем происходит освобождение памяти, выделенной указателю m_pHead.
1
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
19.04.2013, 03:43  [ТС] 10
Спасибо за помощь. Очень признателен что в столь поздний час, нашлись люди которые мне помогли.
0
...
1793 / 1260 / 932
Регистрация: 12.02.2013
Сообщений: 2,058
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
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 time. 1. Your...

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

Как вызвать функцию class A, из функции class B
Как вызвать функцию class A, из функции class B К примеру Class A{ public: int a,b; void...

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

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

Объяснить причины ошибки "Extra qualification 'CLASS CONSTRUCTOR' and 'CLASS' has incomplete type"
Согласно синтаксису, вроде все правильно, но ошибка... что не так? Ошибки компилятора ниже на...


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

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

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