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

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

Войти
Регистрация
Восстановить пароль
 
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
#1

class List - C++

19.04.2013, 03:03. Просмотров 461. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос class List (C++):

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

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

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

Работа с class ами. Заполнение дин. массива типа class - C++
Всем доброго времени суток! Это моя первая тема на этом сайте, поэтому если что извините меня (за неточности итд итп). Мне нужно...

Create a programm that creates an object of created class Time and tests the member functions of class - C++
Time Class Create a class called Time that might be used to represent time. 1. Your class should include three data...

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

10
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 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Эксперт С++
7491 / 4606 / 692
Регистрация: 29.11.2010
Сообщений: 12,590
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Эксперт С++
7491 / 4606 / 692
Регистрация: 29.11.2010
Сообщений: 12,590
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Эксперт С++
7491 / 4606 / 692
Регистрация: 29.11.2010
Сообщений: 12,590
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Эксперт С++
7491 / 4606 / 692
Регистрация: 29.11.2010
Сообщений: 12,590
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
...
1708 / 1201 / 496
Регистрация: 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
Привет! Вот еще темы с ответами:

enum и class как составляющие другого class - C++
Как организовать ввод enuma с клавиатуры (51-я строка)? Как прикрепить класс date к employee в private? :wall: #include &lt;iostream&gt; ...

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

Объяснить причины ошибки "Extra qualification 'CLASS CONSTRUCTOR' and 'CLASS' has incomplete type" - C++
Согласно синтаксису, вроде все правильно, но ошибка... что не так? Ошибки компилятора ниже на рисунке... #include &lt;iostream&gt; ...

Ошибка при компиляции undefined reference to `List<int>::List()'| - C++
Доброго времени суток=) столкнулась с такой проблемой нужно написать шаблон класса. При компиляции выдает ошибку undefined reference to...


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

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

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