Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для Ieroglif
19 / 19 / 2
Регистрация: 23.06.2011
Сообщений: 238

Класс || первый опыт

22.04.2012, 02:01. Показов 1100. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем не спящим в этот поздний(ранний) час!

Как можно увидеть из заголовка, я пытаюсь освоить классы. Написал простенький код:
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
class f_class{
int x, y;
public:
    f_class(int x=0, int y=0);
    ~f_class();
    void show(int x, int y);};
 
    f_class::f_class (int x, int y)
    {
        coot<<"Enter x: ";
        cin>>f_class::x;
        cout<<"Enter y: ";
        cin>>f_class::y;
 
    }
    void f_class::show(int x, int y){
        cout<<"x: "<<f_class::x<<endl;
        cout<<"y: "<<f_class::y<<endl; 
    }
 
int main(){
    f_class l();
    //l.f_class();
    //l.show();
    system("pause");
return 0; 
}
А теперь вопрос: а как мне с этим классом работать? Как "запустить" конструктор, ф-ию печати х и у,
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.04.2012, 02:01
Ответы с готовыми решениями:

Не могу найти ошибку, первый опыт в С++.
первый опыт в С++, и то неудачный( Никак не могу заставить работать программку( То не запускается, то вылетает сразу( // Lab1.cpp:...

Первый опыт с DirectX9. Странное поведение программы
Решил начать осваивать DirectX. Взял код из этого урока, где рисуется треугольник ...

Самый первый опыт С++. На экран выводит не то, что ввёл.
Ввожу одно. Выводит всегда -12-14-16. Откуда он ваще берет эти числа ума не приложу. Подскажите плизКод выкладываем в виде текста.

9
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
22.04.2012, 02:07
чтото вроде

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
#include <iostream>
using namespace std;
 
class f_class{
int x, y;
public:
    f_class (int x = 0 , int y = 0)
    {   
        cout<<"Enter x: ";
        cin>>f_class::x;
        cout<<"Enter y: ";
        cin>>f_class::y;
 
    }
    void show(){
        cout<<"x: "<<f_class::x<<endl;
        cout<<"y: "<<f_class::y<<endl; 
    }
};
 
int main(){
    f_class l;
    l.show();
}
1
 Аватар для Ieroglif
19 / 19 / 2
Регистрация: 23.06.2011
Сообщений: 238
22.04.2012, 02:15  [ТС]
Пардон, поспешил с сообщение - невнимателен был.

То есть не всегда необходимо в аргументах функций указывать используемые переменные? В моём случае - оттого, что была указана область видимости?
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
22.04.2012, 02:18
что значит не работает?
http://codepad.org/bx7S62aK

Добавлено через 1 минуту
Цитата Сообщение от Ieroglif Посмотреть сообщение
f_class l();
это объявление функции l, которая не принимает аргументов и возвращает объект типа f_class
0
70 / 70 / 13
Регистрация: 21.12.2011
Сообщений: 188
22.04.2012, 02:19
C++
1
2
f_class l;
    l.show();
Создается объект l класса f_class. Далее для него вызывается метод show. Приведите текст ошибки.
0
 Аватар для Ieroglif
19 / 19 / 2
Регистрация: 23.06.2011
Сообщений: 238
22.04.2012, 02:38  [ТС]
Так, а деструктор?
C++
1
~f_class(){delete x; delete y;}
delete работать отказывается. Альтернативы?

Добавлено через 56 секунд
pobedinsky, а проблема эта уже решена, сейчас вопрос о деструкторе - его описании.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
22.04.2012, 02:42
Цитата Сообщение от Ieroglif Посмотреть сообщение
То есть не всегда необходимо в аргументах функций указывать используемые переменные? В моём случае - оттого, что была указана область видимости?
нет, не нужно.
под функциями ты имел в виду очевидно функции-члены класса, так называемые методы.
они получают информацию о данных, содержащихся в объекте для которого вызваны неявно, через указатель this.
то есть когда ты вызываешь такой метод
C++
1
void f_class::show(){cout<<x<<y;}
компилятор неявно преобразует его в нечто похожее на
C++
1
void show(f_class* this){cout<<(this->x)<<(this->y);}
Но подобное преобразование не твоя забота, а компилятора. Поэтому ты спокойно можешь вызывать в программе
C++
1
l.show();
и будь уверен, он выведет именно те x и y, которые хранятся в объекте l

Добавлено через 57 секунд
Цитата Сообщение от Ieroglif Посмотреть сообщение
Так, а деструктор?
забудь пока о деструкторе. Ты бежишь впереди паровоза, по-моему. Ты где нашёл такой пример деструктора? И даже если не говорить о деструкторах, где ты нашёл такое использование оператора delete?
Забудь! delete удаляет только память, выделенную new и не более
1
 Аватар для Ieroglif
19 / 19 / 2
Регистрация: 23.06.2011
Сообщений: 238
22.04.2012, 02:44  [ТС]
Почему забыть?

Всё же хочется иметь представление как работать с ним.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
22.04.2012, 02:55
Цитата Сообщение от Ieroglif Посмотреть сообщение
Всё же хочется иметь представление как работать с ним.
ну во-первых, деструктор в подавляющем большинстве случаев вызывается неявно. Не уверен, но помоему редкое исключение этому использование placement new, ведь так, знающие люди? Но это, действительно редкое исключение, особенно для новичков, как мы.

Короче, ты уясни, что деструктор вызывается сам, неявно, всякий раз, когда время жизни локальной или глобальной переменной заканчивается. Тебе его вызывать не нужно.

Второе- оператор delete используется в только паре с оператором new и только для выделенной им памяти. при освобождении таким способом памяти из под объекта класса, опять же неявно вызывается его деструктор. Применяется естественно к указателям, а не переменным. Ты же не пишешь в простых программах delete для каждой переменной???
C++
1
2
3
4
int main(){
int a=0;
delete a;//ты же так не делаешь??? Это ошибка!!!
}
Третье, если не работаешь с динамической памятью, или какими ещё подобными ресурсами, оставляй деструктор по умолчанию.
Ну и виртуальный деструктор изучи, когда будешь изучать наследование и виртуальные функции, но пока не беги вперёд паровоза.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
22.04.2012, 04:27
Деструктор нужно описывать, только если работаешь с памятью (new). В нём ты должен её освободить. В остальных случаях деструктор можно не описывать. А если работаешь с наследованием, желательно деструкторы делать виртуальными. Вызывется он когда объект выходит из области видимости программы, и его нужно уничтожить.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.04.2012, 04:27
Помогаю со студенческими работами здесь

Первый опыт знакомства с Qt
Ребята, подскажите пожалуйста по поводу сборки Qt под Visual Studio 2005. Я вчера раз 5 пытался сконфигурировать, но постоянно были...

Первый опыт
Приветствую всех! Сильно не бейте, сделал БД Автосалон, нужно для учёбы. Таблицы должны быть нормализованы по 3НФ. Вот не пойму, есть ли...

Первый опыт
День добрый форумчане. Имееться конфа УТП 1.0.19.8 типовая, обычное приложение, малость измененная - изменены роли и права и более ничего...

Первый опыт с OpenGL
Всем привет! Я долго искал ответ на свой вопрос,пробовал и так,и эдак,но никак не получилось у меня. Вопрос прост. У меня...

Первый опыт с FPGA
Хочу продолжить тему начатую когда-то dmtr. Кратко напишу, что он когда-то сделал - кое-что сохранял из его ответов. beer Сначала...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru