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

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

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

class List - C++

19.04.2013, 03:03. Просмотров 452. Ответов 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 ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2013, 03:03     class List
Посмотрите здесь:

Class - C++
Здраствуйте,не подскажете как на С++ можно из отцовского класа вызвать ф-ю в клас-нащадок?

class C++ - C++
Количество строк: 3. Столбцы: Фамилия, Имя, Род занятий (сотрудник, студент), Год поступления. Вычислить сотрудника, принятого на работу...

class - C++
помогите закончить программу класс который в закрытой области содержит данные о человеке а пользователь через интерфейс класса...

Class - C++
Можно сделать так ? class mnz { public: point array; //тип множеств }

Class - C++
Создать класс vector3D, задаваемый тройкой координат. Обязательно должны бытьреализованы: сложение и вычитание векторов, скалярное ...

Class - C++
Блин ну вот в чем тут ошибка? #include <iostream> using namespace std; class cat { public: int GetAge(); void...

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

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

в 1 копируем лишь указатель. размер указателя 4 байта на 32-х битных платформах.
в 2 копируем сам объект расположенный по указателю. размер вашего объекта 8 байт тоже на 32-х битных платформах.
MrGluck
Модератор
Эксперт CЭксперт С++
7163 / 4329 / 632
Регистрация: 29.11.2010
Сообщений: 11,751
19.04.2013, 03:15     class List #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;
}
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
19.04.2013, 03:19  [ТС]     class List #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;
}
Я так понял он должен выводить одно и то же ?
MrGluck
Модератор
Эксперт CЭксперт С++
7163 / 4329 / 632
Регистрация: 29.11.2010
Сообщений: 11,751
19.04.2013, 03:21     class List #5
Цитата Сообщение от Xsenon_rus Посмотреть сообщение
Я так понял он должен выводить одно и то же ?
никому он не должен. В первом случае идет копирование указателя (т.е. f2 ссылается на тот же участок памяти, что и f1), во втором по разыменованному указателю, т.е. по значению.
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
19.04.2013, 03:28  [ТС]     class List #6
Я имел в виду здесь:

std::cout << f1->x << " " << f2->x << " " << f3.x << std::endl;
MrGluck
Модератор
Эксперт CЭксперт С++
7163 / 4329 / 632
Регистрация: 29.11.2010
Сообщений: 11,751
19.04.2013, 03:31     class List #7
Xsenon_rus, ваше "здесь" фигурирует в моем примере дважды.
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
19.04.2013, 03:35  [ТС]     class List #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 вопросу ...
MrGluck
Модератор
Эксперт CЭксперт С++
7163 / 4329 / 632
Регистрация: 29.11.2010
Сообщений: 11,751
19.04.2013, 03:41     class List #9
Цитата Сообщение от Xsenon_rus Посмотреть сообщение
но с инициализацией я так и не понял ...
Почитайте про предназначения конструкторов и деструкторов. Первый вызывается при создании объекта, соотв. создает ресурсы и, возможно (желательно) инициализирует их начальным значением, второй эти ресурсы освобождает.

Добавлено через 1 минуту
В вашем примере в конструкторе член m_pHead инициализируется начальным значением NULL, в деструкторе происходит вызов метода ClearList(), затем происходит освобождение памяти, выделенной указателю m_pHead.
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
19.04.2013, 03:43  [ТС]     class List #10
Спасибо за помощь. Очень признателен что в столь поздний час, нашлись люди которые мне помогли.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2013, 06:38     class List
Еще ссылки по теме:

Class ошибка в new - C++
Почему подчеркивает new ? #include &lt;iostream&gt; using namespace std; class Dog { private: char name; int age; ...

Class Complex - C++
Товарищи Программисты, проблема более теоритического характера, чем практического. А проблема в следующем: есть класс комплексное число,...

CLASS МАТРИЦА - C++
я вроде разобрался как перезагружать операцию + , но сложение двух матриц в void main не знаю как записать ?? #include &lt;iostream&gt; ...

Struct VS Class - C++
Здравствуйте. Я прочел интересную статью http://www.rsdn.ru/article/cpp/ObjectsAndPointers.xml#EVPAC по использованию памяти для...


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

Или воспользуйтесь поиском по форуму:
anmartex
...
1701 / 1194 / 495
Регистрация: 12.02.2013
Сообщений: 1,978
19.04.2013, 06:38     class List #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.
Yandex
Объявления
19.04.2013, 06:38     class List
Ответ Создать тему
Опции темы

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