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

Никак не могу разобраться с конструктором. - C++

Восстановить пароль Регистрация
 
manking
1 / 1 / 0
Регистрация: 28.09.2010
Сообщений: 100
28.09.2010, 16:10     Никак не могу разобраться с конструктором. #1
Добрый день.
Недавно стал изучать C++.
Уже 2 день пытаюсь понять суть конструктора, но не могу.

Код который присутствует в книжках, не работает в компиляторах visual C++ 10 и DEV-C++ 4.9.9.2.

например вот на такой код компилятор говорит: функция член локального класса не имеет тела и подсвечивает строку где у меня конструктор. Хотя в книжках показываются такие примеры

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class сотрудник {   
    public:     
        int возраст;
        сотрудник();  //конструктор   // компилятор здесь говорит про ошибку
        ~сотрудник(); // деструктор
                    };
 
    сотрудник::сотрудник(){
        возраст = 10;
    };
 
        сотрудник объект;
 
        сотрудник::~сотрудник(){};


Если я конструктору прямо в классе создам тело то все заработает и создав объект у переменной возраст будет значение 10.

сотрудник(){ возраст = 10; }; //конструктор


Но хочется понять, отчего не работает
констуркция
сотрудник::сотрудник(){}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
obuhanoe
23 / 21 / 2
Регистрация: 25.08.2010
Сообщений: 93
28.09.2010, 16:37     Никак не могу разобраться с конструктором. #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class cotrudnik
{
  public:
           cotrudnik();
           ~cotrudnik();
  private:
           int vozrast;
};
 
cotrudnik::cotrudnik()
{
 
}
 
cotrudnik::~cotrudnik()
{
    
}
вот так не работает?
или
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class cotrudnik
{
  public:
           cotrudnik();
           ~cotrudnik();
  private:
           int vozrast;
};
 
cotrudnik::cotrudnik()
{
  vozrast = 10;
}
 
cotrudnik::~cotrudnik()
{
    
}
manking
1 / 1 / 0
Регистрация: 28.09.2010
Сообщений: 100
28.09.2010, 17:04  [ТС]     Никак не могу разобраться с конструктором. #3
Спасибо. Использую ваш код, почему решил поместить его вне функции main Я классы пытался создать внутри функции main.
А как содал вне заработало.
только не понимаю, классы вообще лучше не создавать внутри функции main?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
28.09.2010, 17:12     Никак не могу разобраться с конструктором. #4
Цитата Сообщение от manking Посмотреть сообщение
только не понимаю, классы вообще лучше не создавать внутри функции main
Естественно,классы нужно создавать глобально.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
29.09.2010, 01:49     Никак не могу разобраться с конструктором. #5
Asics^, Ничего естественного тут нет. Если данные классы нужны только в одной функции то зачем забивать глобальное пространство? Хотя в общем случае, конечно, лучше в глобальном. Но все же.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
int main()
{
    class A
    {
    public:
        A() {}
       ~A() {}
        void SetEl(int i_){i=i_;}
        const int GetEl() const {return i;}
    private:
        int i;
    };
    A Ob;
    Ob.SetEl(5);
    std::cout<<Ob.GetEl();
    return 0;
}
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
29.09.2010, 16:10     Никак не могу разобраться с конструктором. #6
Lavroff, Но самые простые примеры класов в книгах создаютсо глобально,хоч и нужны только одной функции.
Yandex
Объявления
29.09.2010, 16:10     Никак не могу разобраться с конструктором.
Ответ Создать тему
Опции темы

Текущее время: 14:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru