Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Alexandrietz
1 / 1 / 0
Регистрация: 03.05.2016
Сообщений: 53
#1

Конструкторы/Деструкторы. Дружественные функции - C++

16.02.2017, 18:06. Просмотров 171. Ответов 9
Метки нет (Все метки)

Здраствуйте! Учусь на 1 курсе физфака МГУ им. Ломоносова. Начали изучать С++. Вот есть задача, точнее д.з. Можете мне помочь, пожалуйста. Смотрите задание (я его прикреплю). В качестве примера, можете, пожалуйста, оформить мне 1 метод класса, а именно show. А что в этом файле делает конструктор (точнее какую функцию выполняет)? Я просто пытаюсь понять, что тут делать. Использую доп. лит-ру, а именно Шилдта.
0
Миниатюры
Конструкторы/Деструкторы. Дружественные функции  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2017, 18:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Конструкторы/Деструкторы. Дружественные функции (C++):

Конструкторы и деструкторы - C++
Напишите простейшие примеры объявления и определения конструкторов и деструкторов. Желательно, чтобы были примеры с различными типами данных

Конструкторы/Деструкторы - C++
Доброго времени суток! Есть проблемка... после выполнении программа вылетает (без ошибок, просто выбивает в Windows программирую на BC...

Конструкторы и деструкторы - C++
Помогите, пожалуйста, исправить программу и закончить ее как надо. Необходимо реализовать класс с двумя полями, имеющими имена first и...

Конструкторы и деструкторы - C++
Здравствуйте уважаемые программисты, помогите пожалуйста новичку? Не могу разобраться в программе, где смог там написал комментарий и то не...

Конструкторы и деструкторы - C++
Помогите исправить программу. Необходимо реализовать класс с двумя полями, имеющими имена first и second. Обязательно должны...

Конструкторы и деструкторы - C++
Прочитал про конструкторы и деструкторы. Пишут что они нужны для инициализации переменных класса. Как они используются я понял, но не понял...

9
OlafNestandart
54 / 54 / 20
Регистрация: 24.10.2016
Сообщений: 186
16.02.2017, 18:21 #2
;
Цитата Сообщение от Alexandrietz Посмотреть сообщение
оформить мне 1 метод класса, а именно show
C++
1
2
3
void Point::show() const {
    std::cout << "x=" << x << ", y=" << y << std::endl
}
Цитата Сообщение от Alexandrietz Посмотреть сообщение
А что в этом файле делает конструктор (точнее какую функцию выполняет)?
Инициализирует поля класса.
C++
1
Point::Point(double x, double y): x(x), y(y) {}
0
Alexandrietz
1 / 1 / 0
Регистрация: 03.05.2016
Сообщений: 53
16.02.2017, 18:41  [ТС] #3
Не очень понятно, как в функцию класса передевать агрументы из одной фнукции-метода в другую. Скажите, как фофрмить констуктор здесь?

Добавлено через 58 секунд
Просто еще 1 факт: в Шилдте простые примерчики, вроде все понятно, а здесь не очень понятно, что делать.

Добавлено через 2 минуты
Хорошо, смотрите, я ввел в методе show координаты точки изначальные. А как мне описать тогда translate? Мне тогда придется из конструктора передать аргумент методу translate?
0
Songpool
53 / 42 / 12
Регистрация: 24.11.2016
Сообщений: 140
Завершенные тесты: 1
16.02.2017, 18:47 #4
Alexandrietz, Если ты имеешь ввиду, как передавать поля класса в методы класса, то тебе не надо их передавать, ты можешь к ним свободно обращаться в методе.
C++
1
2
3
4
5
6
7
8
9
10
11
class A
{
    int x;
 
    void show();
};
 
void A::show()
{
    std::cout<<x<<std::endl;
}
А если ты хочешь передать что-то не относящееся к классу в метод класса, то это реализовывается, как и у обычной функции.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class A
{
    int x;
 
public:
    void show(int);
};
 
voi A::show(int x)
{
    std::cout<<x<<std::endl;
}
 
int main()
{
    A a;
    a.show(5);
    return 0;
}
1
OlafNestandart
54 / 54 / 20
Регистрация: 24.10.2016
Сообщений: 186
16.02.2017, 18:54 #5
Цитата Сообщение от Alexandrietz Посмотреть сообщение
Не очень понятно, как в функцию класса передевать агрументы из одной фнукции-метода в другую. Скажите, как фофрмить констуктор здесь?
Я показал как оформить конструктор. Аргументы конструктора сохраняются полях класса, к полям класса имеет доступ любой метод этого класса а так же функции, объявленные как дружественные.
Цитата Сообщение от Alexandrietz Посмотреть сообщение
А как мне описать тогда translate?
C++
1
2
3
4
void Point::translate(double x, double y) {
    this->x += x;
    this->y += y;
}
Здесь имеется небольшая проблема с именованием полей и аргументов - для избежания путаницы не рекомендуется давать им одинаковые имена. Так же тогда не прийдется использовать указатель this.
1
Alexandrietz
1 / 1 / 0
Регистрация: 03.05.2016
Сообщений: 53
16.02.2017, 19:15  [ТС] #6
Как я понимаю, констуктор мне сразу дает изначально точку (0,0), то есть инициализирует ее, когда объявлен класс. Но ведь таких точек на евклидовой плоскости бесконечно. Как мне сделать так, чтобы точка произвольной?
0
OlafNestandart
54 / 54 / 20
Регистрация: 24.10.2016
Сообщений: 186
16.02.2017, 19:25 #7
Цитата Сообщение от Alexandrietz Посмотреть сообщение
Как мне сделать так, чтобы точка произвольной?
C++
1
2
Point p1(); // x = 0.0, y = 0.0
Point p2(5, 3); // x = 5.0, y = 3.0
1
Alexandrietz
1 / 1 / 0
Регистрация: 03.05.2016
Сообщений: 53
16.02.2017, 19:36  [ТС] #8
А я могу так, например, оформить конструктор, чтобы он задавал произвольную точку, которую я хочу? Я имею в виду, что эти координаты я ввожу в командную строку, а дальше я проделываю все необходимые операции (поворот, параллельный перенос и прочее).
0
Миниатюры
Конструкторы/Деструкторы. Дружественные функции  
OlafNestandart
54 / 54 / 20
Регистрация: 24.10.2016
Сообщений: 186
16.02.2017, 19:43 #9
Лучше так:
C++
1
2
3
double x, y;
cin << x << y;
Point p(x, y);
Как бы инкапсуляция - класс не должен ничего знать о том, что его не касается. То есть, откуда взялись координаты - это не его дело, ему нужно их только обрабатывать. Поэтому и метод show не очень в тему здесь, лучше бы было реализовать методы getX и getY, возвращающие x и y, а пользователь сам решит что с ними делать - вывести их на консоль или, может, использовать для дальнейших вычислений.
Но. как говорят, из песни слов не выбросишь, какое задание дали, такое и нужно делать.
1
Alexandrietz
1 / 1 / 0
Регистрация: 03.05.2016
Сообщений: 53
16.02.2017, 20:16  [ТС] #10
Вот что-то написал. Все ли у меня правильно? И откуда брать аргумент angle в методе rotate?
0
Миниатюры
Конструкторы/Деструкторы. Дружественные функции  
16.02.2017, 20:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2017, 20:16
Привет! Вот еще темы с ответами:

Конструкторы и деструкторы - C++
Не понимаю, как закончить программу. Написала конструктор и деструктор, хотя он тут и не нужен по идее. Но по заданию сделала. А как...

Конструкторы и деструкторы - C++
Необходимо реализовать класс с двумя полями, имеющими имена first и second. Обязательно должны присутствовать: Для инициализации...

Конструкторы и деструкторы - C++
Привет. Есть структура, содержащая 7 полей, в которые я ввожу значения с клавиатуры. Нужно используя конструкторы и деструкторы...

Конструкторы и деструкторы - C++
#include &lt;iostream&gt; #include &lt;Windows.h&gt; class Try { public: void* px; Try() { printf(&quot;Try\n&quot;); px=malloc(12); }; ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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