• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przeciązenie operatorów (C++)

VPS Starter Arubacloud
0 głosów
439 wizyt
pytanie zadane 28 lipca 2018 w C i C++ przez Sic Dyskutant (8,510 p.)
Czy przeciązenie operatów występuję tylko i wyłącznie w programowaniu obiektowym (mam tu na myśli tylko w klasach) ?

Czy jest szansa aby wykorzystać to jako zwykłą funkcje, a nie składową ?

3 odpowiedzi

+1 głos
odpowiedź 28 lipca 2018 przez Knayder Nałogowiec (37,640 p.)
wybrane 30 lipca 2018 przez Sic
+1 głos
odpowiedź 29 lipca 2018 przez Gramad Obywatel (1,660 p.)
Tak jak pokazał poprzednik, operatory można przeciążać także w strukturach. Ale tylko tych w języku C++!!
W języku C w ogóle nie jest możliwe przeciążanie operatorów, tak samo jak nie jest możliwe tworzenie metod w strukturach(można to objeść tworząc atrybut w strukturze będący wskaźnikiem na funkcje zob. link: https://stackoverflow.com/questions/17052443/c-function-inside-struct)
komentarz 29 lipca 2018 przez RafalS VIP (122,820 p.)

także w strukturach

Nie wprowadzajmy niepotrzebnego zamieszania. Struktura od klasy różni się tylko domyślnym modyfikatorem dostępu składowych i domyślnym typem dziedziczenia. Jeśli da się dla klasy to da się też dla struktury :P

komentarz 29 lipca 2018 przez Gramad Obywatel (1,660 p.)
Jesteś pewny? A co jeśli chodzi o dziedziczenie wielobazowe albo o przyjaźń?
komentarz 29 lipca 2018 przez RafalS VIP (122,820 p.)

Oświeć mnie przykładem albo artykułem, bo nie spotkałem się z innymi różnicami poza tymi które podałem.

class B;
struct A {
	friend class B;
	int a = 100;
private:
	static const int number = 10;
};

struct B {
	int b = A::number;
};

struct C: A,B {
	int b = a;
};

 

komentarz 29 lipca 2018 przez Gramad Obywatel (1,660 p.)
Nie mam zamiaru Cię "oświecać". Po prostu pytałem czy jesteś pewny tego stwierdzenia, bo nigdy się nie spotkałem z takowym.
komentarz 29 lipca 2018 przez RafalS VIP (122,820 p.)
Przepraszam, zrozumiałem, że znasz jakąś różnice :P

https://stackoverflow.com/questions/92859/what-are-the-differences-between-struct-and-class-in-c

Najbardziej plusowana odpowiedz tak mówi + w komentarzach nikt nie podważył zdania = 98% szansy na prawde :P
komentarz 29 lipca 2018 przez criss Mędrzec (172,590 p.)
Coś takiego jak struktura w c++ w ogóle nie istnieje. Słowo kluczowe `struct` służy do deklaracji/definicji klasy, ale domyślnie mamy wtedy public zamiast private.
+1 głos
odpowiedź 29 lipca 2018 przez RafalS VIP (122,820 p.)
edycja 29 lipca 2018 przez RafalS

Tak i jest to w niektórych przypadkach konieczne. Np Gdy chcemy zdefiniować operacje gdy po lewej stronie stoi typ wbudowany a po prawej klasa:

struct A {
	int number = 10;
};

int operator+(int lhs, const A& rhs) {
	return lhs + rhs.number;
}

int main() {
	cout << 1 + A() << endl;
}

Ograniczenie z typami wbudowanymi jest jedynie takie, że nie możesz nadpisać dla nich operatorów już istniejących, czyli np double + int.

Drugi przypadek jest wtedy gdy po lewej stronie stoi klasa ale nie nasza i nie możemy jej zmodyfikować. Klasyczny przykład to wypisywanie obiektów za pomocą cout (std::ostream):

struct A {
	int number = 10;
};
ostream& operator<<(ostream& out, const A& a) {
	return out << a;
}
int main() {
	cout << A() << endl;
}

Podobne pytania

0 głosów
1 odpowiedź 195 wizyt
0 głosów
1 odpowiedź 448 wizyt
0 głosów
1 odpowiedź 945 wizyt

92,454 zapytań

141,262 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...