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

Что-то код выдаёт не так - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
07.10.2009, 16:24     Что-то код выдаёт не так #1
Что-то код выдает неправильно, хотя он и компилится:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
using namespace std;
 
class Vechicle{
    int passengers;
    int fuelcap;
    int mpg;
public:
    Vechicle():passengers(),fuelcap(),mpg() { }
    Vechicle(int p, int f, int m) { }   
    
 
    int  range()
    {
        return mpg * fuelcap;
    }
    int get_passengers() {return passengers;}
    int get_fuelcap()    {return fuelcap;}
    int get_mpg()        {return mpg;}
};
 
int main()
{
    Vechicle minivan(7,16,21);
    Vechicle sportscar(2,14,12);
 
    int range1,range2;
    range1 = minivan.range();
    range2 = sportscar.range();
 
    setlocale(0,"");
    cout<<"Манифургон может перевезти "
        <<minivan.get_passengers()
        <<" пассажиров на расстояние "<<range1
        <<" киллометров. "<<'\n';
 
    cout<<"Спортивный автомобиль  может перевезти "
    <<minivan.get_passengers()
    <<" пассажира на расстояние "<<range2
    <<" киллометров"<<'\n';
 
    cin.get();
}
Добавлено через 13 минут
Всё, понял,нужно было вот так:
C++
1
    Vechicle(int p, int f, int m):passengers(p), fuelcap(f), mpg(m) { }

Вы не объясните зачем нужно вот это:

C++
1
2
3
 int get_passengers() {return passengers;}
        int get_fuelcap()    {return fuelcap;}
        int get_mpg()        {return mpg;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2009, 16:24     Что-то код выдаёт не так
Посмотрите здесь:

C++ Подскажите что не правильно чему оно не так выводит и по возможности исправьте ошибки вот условие и код программы
C++ Арксинус числа выдаёт непонятно что
C++ Народ гляньте код и подскажите что не так.
C++ Как сделать так что я мог умножать не на два числа а на 3,4,5 и так далее?
код, который прекрасно выполняет Code::Blocks не выполняеться в Студии, как сделатьь так чтобы Студия воспринимала этот код?? C++
Ошибки выдаёт ( не пойму причину, что не так? C++
C++ При решении программа выдаёт значение функции, равное 0 или выдаёт ошибку. Что не так?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
08.10.2009, 16:47     Что-то код выдаёт не так #21
Цитата Сообщение от Syltan Посмотреть сообщение
1)
Код
Код - это функции-члены класса, в которых описан код.
Данные - это переменные, описанные в самом классе, а не в функциях.
Это определение верно?
значение слова "код" зависит от контекста. данные не обязательно описаны в классе. они могут быть где-то вообще снаружи.

Цитата Сообщение от Syltan Посмотреть сообщение
2) Инкапсуляция - скрытие всех, полей, которые использовались для создания этого объекта?
близко, но я бы лучше сказал, что инкапсуляция - это разделение внешнего интерфейса и внутренней реализации. полей может в принципе вообще не быть.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
08.10.2009, 17:02  [ТС]     Что-то код выдаёт не так #22
А этот вариант?

Инкапсуляция - это объединение данных и кода в объект, и скрытие от пользователя, того, как я реализовывал этот объект, когда он будет взаимодействовать с этим объектом ,через интерфейс, который я создам,через свойства этого объекта.
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
08.10.2009, 18:23     Что-то код выдаёт не так #23
Цитата Сообщение от Syltan Посмотреть сообщение
Инкапсуляция - это объединение данных и кода в объект, и скрытие от пользователя, того, как я реализовывал этот объект, когда он будет взаимодействовать с этим объектом ,через интерфейс, который я создам,через свойства этого объекта.
А теперь перепиши это определение не используя слова "данные", "код" и "объект"
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
08.10.2009, 18:56  [ТС]     Что-то код выдаёт не так #24
Инкапсуляция - это скрытие от пользователя полей класса.
Без этих слов не получается.
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
08.10.2009, 19:01     Что-то код выдаёт не так #25
Syltan, тогда перестань угадывать и попробуй понять смысл того, что такое инкапсуляция. Просто знание формулировки определения ровным счетом ничего не дает
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
08.10.2009, 19:10  [ТС]     Что-то код выдаёт не так #26
Код
А теперь перепиши это определение не используя слова "данные", "код" и "объект"
Интересно,а как же можно переписать без использования этих слов.
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
08.10.2009, 19:28     Что-то код выдаёт не так #27
Сокрытие внутренней реализации класса(полей, методов) с возможностью доступа к ним только с помощью открытых методов
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
08.10.2009, 19:44  [ТС]     Что-то код выдаёт не так #28
Код
с возможностью доступа к ним только с помощью открытых методов
Членов класса?
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
08.10.2009, 19:59     Что-то код выдаёт не так #29
Я в скобках сказал к кому . Ну можно и так
Цитата Сообщение от Syltan Посмотреть сообщение
Членов класса
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2009, 03:50     Что-то код выдаёт не так
Еще ссылки по теме:

C++ Код из книги выдаёт ошибку
C++ Не работает код, скажите что не так)
Выдаёт ошибку mbstowcs() , и так с любыми попытками конвертации с anci и с unicode C++
C++ Что в коде ни так? while не работает так, как ожидаю
Преобразовать код так, что бы ввод данных осуществлялся из файла C++

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
09.10.2009, 03:50     Что-то код выдаёт не так #30
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Vechicle{
        int passengers;
        int fuelcap;
        int mpg;
public:
        Vechicle():passengers(),fuelcap(),mpg() { }
        Vechicle(int p, int f, int m) { }       
        
 
        int  range()
        {
                return mpg * fuelcap;
        }
        int get_passengers() {return passengers;}
        int get_fuelcap()    {return fuelcap;}
        int get_mpg()        {return mpg;}
};
ты когда программу запустишь, объект, который принадлежит классу Vechicle создастся в памяти в виде капсулы

C++
1
2
3
        int passengers;
        int fuelcap;
        int mpg;
сюда могут помещаться данные в виде чисел, число пассажиров, число горючего, число mpg

но, если что-то захочет видоизменить эти числа, оно не сможет это сделать, потому что капсула доступна только тем методам, которые описаны в том же самом классе

C++
1
2
3
        int  range() {
            return mpg * fuelcap;
        }
метод описан в том же классе, значит может читать переменные и менять переменные, что он и делает, только читая их

C++
1
    Vechicle cars[3];
создал три машины, у каждой инкапсулированы три переменные, переменные одной машины защищены от действий с переменными другой машины
Yandex
Объявления
09.10.2009, 03:50     Что-то код выдаёт не так
Ответ Создать тему

Метки
инкапсуляция, ООП
Опции темы

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