Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
1

перегрузка операторов)

23.01.2019, 19:20. Показов 1041. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
ожидаемо)))) правильно же?
на этом ну просто нельзя не споткнуться .
я думаю,что вы и следующие темы предвидите ))))
ну ладно. пока что перегрузка операторов.

уважаемые гуру С++ , объясните. когда я перегружаю оператор унарный например, ну или бинарный, то этот перегруженный оператор будет работать только с объектами класса? я правильно понимаю?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2019, 19:20
Ответы с готовыми решениями:

Что такое "перегрузка операторов"? Каковы принципы работы перегруженных операторов и назначение указателя this
Добрый день . Помогите понять принцип работы перегрузки операторов. объясните пожалуйста в...

Перегрузка операторов С++
Задание: Написать код на языке С++ где реализуется перегрузка операторов. Тематика: База данных...

Перегрузка операторов
Создать класс А с 4 полями, отражающие показатели объекта. Перегрузить операции. Метод класса:...

Перегрузка операторов
Вот такое вот задание: Создать класс А с 4 полями, отражающие показатели объекта. Перегрузить...

11
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
23.01.2019, 19:42 2
Цитата Сообщение от pcmax Посмотреть сообщение
когда я перегружаю оператор унарный например, ну или бинарный, то этот перегруженный оператор будет работать только с объектами класса? я правильно понимаю?
Один из операндов должен быть объектом класса. Остальные операнды могут иметь иные типы.

PS: Есть языки программирования, где перегрузка операций вообще к классам не привязана!
1
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
23.01.2019, 19:48  [ТС] 3
хорошее уточнение. я только начинаю понимать....
0
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
24.01.2019, 14:42  [ТС] 4
подскажите еще пожалуйста, почему когда я указываю класс дружественным, мне не дает доступ к полям базового класса через наследуемый?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include  <iostream>
 
class fo;
class foo{
friend class fo;
 int a=10;
 int b=11;
 void viev(void){std::cout << "hi";}
 
    
};
class fo :public foo{
 void viev(void){std::cout << "else hi";}   
    
};
int main(int argc, char** argv){
fo obj;
std::cout << obj.a;
    
return 0;    
}
Добавлено через 27 минут
понял.... все. кажется дошло почему.
0
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
24.01.2019, 16:52 5
Лучший ответ Сообщение было отмечено pcmax как решение

Решение

Дружественность не наследуется.

Добавлено через 1 минуту
А в примере выше переменные просто нужно указать как protected.

Добавлено через 47 секунд
А дружественность делать для void main
1
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
24.01.2019, 17:15  [ТС] 6
да уж))))
я потом присмотрелся и понял, что как же я могу в main() обращаться к полю закрытого класса. в дружественном классе-да, но для main() это поле privet.
а вот сделать дружественно для main() это я не додумался.... научите, как?
0
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
24.01.2019, 19:29 7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include  <iostream>
 
class foo
{
    void viev(){std::cout << "hi";} 
protected:
    int a=10;
    int b=11;
};
class fo :public foo
{
    void viev(){std::cout << "else hi";}   
    friend int main(int argc, char** argv); 
};
 
int main(int argc, char** argv){
    fo obj;
    std::cout << obj.a;  
    return 0;    
}
1
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
24.01.2019, 23:19  [ТС] 8
и еще пожалуйста просветите...

когда создаю объекты класса, то автоматически вызывается конструктор по умолчанию. а что будет присваивать этот конструктор?
ну например
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
class foo{
public:
int a;
int b;
 
 
 
int main(int argc, char **argv){
 
 
 
foo obj; //вот тут создание объекта класса вызывает конструктор тот что по умолчанию.   что будет делать этот вызванный конструктор?
return 0;
0
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
24.01.2019, 23:48 9
Ничего не будет присваивать. Какой мусор в переменных был - такой и останется...
1
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
25.01.2019, 11:22  [ТС] 10
спасибо
0
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
25.01.2019, 13:14 11
Цитата Сообщение от pcmax Посмотреть сообщение
когда создаю объекты класса, то автоматически вызывается конструктор по умолчанию. а что будет присваивать этот конструктор?
Что забавно, в вашем случае могут быть любые данные, тк стандарт это никак не описывает, те возможно там могут быть и нули, но это никто не гарантирует, в отличии от статических переменных.
Но если создавать объект так:
C++
1
2
3
4
5
6
7
8
9
struct Object {
    int    a;
    double d;
};
 
int main() {
    auto obj = Object();
    std::cout << obj.a;
}
мы имеем зануливание переменных .
1
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
25.01.2019, 20:44  [ТС] 12
спасибо
0
25.01.2019, 20:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2019, 20:44
Помогаю со студенческими работами здесь

Перегрузка операторов
Доброго времени суток Код выдает ошибку Не могу понять как исправить cannot convert...

Перегрузка операторов
Никак не возьму в толк, почему оно не работает! // CG5.cpp : Defines the entry point for the...

Перегрузка операторов +,-,*,/
Есть класс который описывает дробь.2 способа ввода. Задание - переопределить +,-,*, / .Не понимаю...

Перегрузка операторов
Необходимо перегрузить следующие операторы: • Присвоение; • Сложение (+; в случае символьных...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru