Press "Enter" to skip to content

wtf czyli filozofowanie nt. c++

Dobra. Jakiś czas mnie nie było, może zacznę więc od krótkiego co u mnie. Jakiś tydzień temu wyszłam z dołka i nadrabiam zaległości, poza tym semestr zakończyłam bez poprawki, z wynikiem „do przyjęcia”, choć mogło być lepiej.
Tak się ostatnio bawię kodem, bo mi się nudzi. Nie wychodzi z tego zbyt wiele, ale zawsze coś. Jestem z natury „filozofką”, chciałam zobaczyć, czy przypadkiem programowanie c-like nie jest w cpp tylko jako nakładka dla wstecznej kompatybilności. W jaki sposób szukałam tego dziwnego „czegoś”? Szukałam obiektowości tam, gdzie wg języka C nie powinno jej być, a mianowicie w interpretowaniu jako klas typów wbudowanych, struktur i unii.

Typy wbudowane
Tak, da się je powołać do życia używając konstruktora z jednym parametrem (może nawet więcej, ale nie wiem, czym by one były) np. int test(15); przejdzie tak, jakby to było int test = 15. Przez chwilę myślałam, że ten nowy zapis jest szybszy. Przy większej ilości prób odpalenia programiku (prostego) wyszło, że niekoniecznie. Jest to raczej loteria.

Struktury
Skomentuję to tak, jak wyczytałam. Obecnie struktura różni się od klasy tym, że przy kontroli dostępu w klasie mamy private przez domniemanie, a w strukturze public. Hmm, może unie są protected:p

Unie (taaa, moje kochane unie. Wkładasz kota wyciągasz sierść, lub konserwę z kota, lub… kota)

Nie szukałam co jest w unii przez domniemanie, ale chociaż unia może pomieścić jeden element, to również mamy tu kontrolę dostępu, baaa nawet można napisać sobie konstruktor, destruktor czy metody do operowania na tych danych. Nawet możemy sobie poprzeciążać operatory. Ciężko mi sobie wyobrazić zastosowanie tego w praktyce, ale kto wie;)

Metody w unii deklarujemy i definiujemy w taki sam sposób, jak w klasie (taaa unia::metoda(parametry){cośtam;} przechodzi).
Tak czy inaczej, to tylko ciekawostka. Nie potrafię nawet wymyślić przykładowego użycia.
ale taki kod:

union bla{
private:
	int a;
	char[2] b;
public:
	bla(int q);
	bla(*char w);
	~bla();
	int czytaj_inta();
};

prawdopodobnie po zdefiniowaniu tych funkcji by przeszedł.

Czy więc w c++ zapis c-like jest nakładką? A może odwrotnie? Hmm, i tak pójdzie wszystko do asma.

One Comment

  1. W złą stronę kierujesz swoje myśli, raczej pomyśl, że cpp to po prostu inne podejscie do pisania programów, tzw. Obiektowe, a c było proceduralne, dlatego to co było w c zostało dostosowane do Terminologii obiektowej, bo jakby nie patrzeć w c da się pisać obiektowo, tak samo jak w cpp da sie pisać proceduralnie z klasami. Pozdrawiam.

Comments are closed.