1 Востаннє редагувалося Дмитро-Чебурашка (04.03.2015 14:41:40)

Тема: Щож мав на увазі Лібєрті?

Доброго дня! Автор книги- Лібєрті_ дає у себе в книзі такий ось приклад. Я ніяк не пойму- це при передруку книги що те напутано
чи Ліберті все ж замыслював щось особливо хитре??

Нижче у нього повторюється щось подібне із варіаціями.

Re: Щож мав на увазі Лібєрті?

#include <iostream>
      
      class Counter
      {
         public:
            Counter();
            Counter(int initialValue);
            ~Counter(){ }
            int GetItsVal()const {return itsVal; }
            void SetItsVal(int x) {itsVal = x; }
            Counter Add(const Counter &);
      
         private:
            int itsVal;
      
       };
      
       Counter::Counter(int initialValue):
       itsVal(initialValue)
       { }
      
       Counter::Counter();
       itsVal(0)
       { }
      
       Counter Counter::Add(const Counter & rhs)
       {
          return Counter(itsVal+ rhs.GetItsVal());
       }
      
       int main()
       {
          Counter varOne(2), varTwo(4), varThree;
          varThree = varOne.Add(varTwo);
          std::cout << "var0ne: " << varOne.GetItsVal()<< std::endl;
          std::cout << "varTwo: " << varTwo.GetItsVal() << std::endl;
          std::cout << "varThree: " << varThree.GetItsVal() << std::endl;
      
          return 0;
       }

3

Re: Щож мав на увазі Лібєрті?

Опишіть докладно що саме вас не влаштовує? Можливо до коду додається пояснення і ви його не читали?

Подякували: Дмитро-Чебурашка1

4

Re: Щож мав на увазі Лібєрті?

Може крапка з комою в 22 рядку?

Подякували: Дмитро-Чебурашка1

5 Востаннє редагувалося Дмитро-Чебурашка (05.03.2015 16:37:53)

Re: Щож мав на увазі Лібєрті?

Зараз!!  Зформулюю..  Почитаю..

Re: Щож мав на увазі Лібєрті?

Ошибка    2    error C2448: Counter::{ctor}: вероятно, инициализатор, использующий стиль функции, является определением функции    d:\rozbir\lyberty\counter\counter\counter.cpp    24    1    Counter
Ошибка    1    error C3646: itsVal: неизвестный спецификатор переопределения    d:\rozbir\lyberty\counter\counter\counter.cpp    23    1    Counter

Re: Щож мав на увазі Лібєрті?

Насправді, int itsVal; змінна. Якось хитро вона застосовується!!  Якись кавички..  Як то у функції..  !

8

Re: Щож мав на увазі Лібєрті?

Насправді itsVal(initialValue) — це ініціалізація поля класу (тобто, приблизно те ж саме, що itsVal = initialValue;), яка йде перед порожнім тілом конструктора — {}.

Подякували: Дмитро-Чебурашка1

9 Востаннє редагувалося quez (04.03.2015 15:18:14)

Re: Щож мав на увазі Лібєрті?

Це запис присвоєння значень в конструкторі: Counter::Counter(int initialValue):itsVal(initialValue){ } еквівалентно Counter::Counter(int initialValue){itsVal = initialValue;}
Чомусь вважається, що такий запис краще читається.

Подякували: Дмитро-Чебурашка1

Re: Щож мав на увазі Лібєрті?

Як цікаво!!  Дякую!!

Re: Щож мав на увазі Лібєрті?

А як таки краще оголошувати змінні в полях? Я не зовсім зрозумів як, що б студія все-таки не лаялася.
Я-то можу і просто в конструкторі просто оголосити, що іроблю але якщо Ліберті писав так, може то є якась ризниця  я хочу краще зрозуміти це.

12

Re: Щож мав на увазі Лібєрті?

Дмитро-Чебурашка написав:

А як таки краще оголошувати змінні в полях? Я не зовсім зрозумів як, що б студія все-таки не лаялася.
Я-то можу і просто в конструкторі просто оголосити, що іроблю але якщо Ліберті писав так, може то є якась ризниця  я хочу краще зрозуміти це.

А студія лається? Як саме?

Оголошуйте так, як вам зручно. На 100% я не впевнений, але результат має бути однаковим.

Подякували: Дмитро-Чебурашка1

Re: Щож мав на увазі Лібєрті?

Зрозуміло.