#cpp
Bardziej opłaca się przekazywać obiekty przez wskaźniki czy przez referencje?
Rozumiem, że główny problem polega na tym, że jak przekazujemy przez wskaźnik, to trzeba pamiętać o zwalnianiu pamięci?
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@VanQator: Zwalnianie pamięci dotyczy tylko obiektów alokowanych na stercie. Po de referencji wskaźnika można taki obiekt dalej przekazywać jako referencje. Do obiektów alokowanych na stosie też da się pobrać wskaźnik, ale trzeba pamiętać, że jest on ważny tylko do czasu trwania scopa, w którym został on za alokowany. No i też łatwiej się pomylić, bo zwolnienie wskaźnika na obiekt na stosie się niepowiedzie ( ͡° ͜ʖ ͡°
  • Odpowiedz
@VanQator: To nie jest konstruktor kopiujący, bo standard nazywa konstruktorem kopiującym tylko jaki który przyjmuje jedną const referencje.
Ja bym dał słówko explicit przed takim konstruktorem, aby uniknąć przypadkowego stworzenia obiektu na inicjalizacji kopiującej.
  • Odpowiedz
#cpp
Trochę nie kumam idei wzorców projektowych. Dzisiaj ogarnąłem pierwszy: State, i przyszło mi to... no powiedzmy, że o garnąłem i umiem zrozumieć i zaimplementować własny State. Ale gdy przysiadłem do obserwatora to jest dla mnie kosmos. Na serio te powiązanie między klasami to dla mnie p------a abstrakcja.

Czy ja się dobrze uczę wzorców? Czy kiedy ktoś zapyta mnie czy znam obserwatora, a ja mu powiem, rozumiem konecepcję i schemat
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 1
@VanQator: ogólnie z wzorców się korzysta w większych projektach. Nieraz połączonych ze sobą. Tak szczerze ja zacząłem zauważać sensowność dopiero w pracy albo właśnie podczas niektórych problemów przy własnych projektach.
Niektóre są bardzo rzadkie jak np interpreter/proxy a niektóre bardzo częste jak np Command/Factory.
Niektóre są wbudowane w język i nawet o nich nie wiesz jak np iterator, albo funktor. Powiem szczerze że znajomość wzorców daje przyjemność z programowania bo
  • Odpowiedz
@VanQator: tak jak pisze Ci kolega wyzej, poki nie zaczniesz czuc potrzeby uzywania patternow, to ta cala wiedza Ci uleci. Napisz jakis dluzszy kod chociaz te ~30k+ linijek. Wtedy na bank stwierdzisz, ze Twoj kod to istne szambo i nauka wzorcow pojdzie Ci znacznie lepiej.
  • Odpowiedz
@VanQator: ogólnie spoko, ale:
1) nie masz destruktora Context, nie zwalniasz pamięci z ptr
2) wywal int state z Context - nie jest ci do niczego potrzebne, jak ci się wydaje że jest potrzebne to pewnie robisz coś źle i logika którą chcesz teraz zaimplementować powinna być w StateOne lub StateTwo
3) using namespace std; - nie uzywaj tego, nie warto. Pisz wszędzie std::..
4) nie zywaj std::endl. Po prostu std::cout << "State
  • Odpowiedz
Piszę appke w #cpp gdzie zależy mi na dość szybkim czasie reakcji. Czy jest możliwość załadowania modelu z wagami (plik kerasa z wagami h5 i architektura modelu w jsonie) i predykcję bezpośrednio w cpp? Zrobiłbym to w #python ale dochodzi jeszcze image processing, a wiadomo jak wolny jest python w stosunku do cpp. Znalazłem coś takiego https://github.com/Dobiasd/frugally-deep ale to tylko Python3, ja niestety pracuję z frameworkiem dla Plython2.
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Zrobiłbym to w #python ale dochodzi jeszcze image processing, a wiadomo jak wolny jest python w stosunku do cpp.


@c137: Biblioteki do pythona wymagające wydajności są pisane w C. Np. biblioteka pillow do przetwarzania obrazów. Więc zbytnio wydajności nie poprawisz.
  • Odpowiedz
@VanQator: wyjatek to mechanizm jezyka (nie tylko cpp) do obslugi sytuacji niepozadanych, najczesciej w postaci try/catch bloku. Rzucenie wyjatku zwija stos az do momentu obslugi wyjatku przez klazule catch.

A czym jest blad? Na to pytanie musisz sam odpowiedziec xD
  • Odpowiedz
mam sobie funkcję która zapisuje do pliku co robi program, tak że jak później coś nie tak już po produkcji i coś się wysypie to wiem gdzie (oczywiście tylko w miejscach gdzie wiem, że może się tak stać). Używam _FILE i LINE jako argumentów żeby nie musieć się za bardzo rozpisywać sam dla siebie. No i czy jest możliwość żeby ta funkcja nie przyjmowała jako argumentów odpowiednio string i int, a
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 0
Hejka, czy jest może jakiś sposób by uprościć overload operatorów +, -, *, / oraz ich odpowiedników z "="? Każdy z nich calluje te samą funkcję z różnicą obiektu funkcyjnego std::plus, std::minus, itd. Mój jedyny pomysł opiera się na hacku z preprocesorem i jakimś mniej lub bardziej sprytnym makro. Jednak wydaje się to mi gorsze rozwiązanie od powielania deklaracji funkcji. Może się mylę, a może istnieje jakiś fajny mechanizm, którego świadomy nie
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@VanQator: 1. std::string to jest kontener STLowy a nie żadne osobny byt

2. Znak końca lini '\n' nie ma nic wspólnego z null terminator w C-style strings. Znak końca lini jest implenetowany róznie w zależności od OS. Dla linuxa będzie to CRLF a więc para 0xDA w ASCII, dla Windowsa samo LF. Null terminator to po prosty 0x0.

3. char* podczas wyświetlania nic nie terminuje bo to zwykły typ wskaźnikowy.
  • Odpowiedz
Jaki jest teraz poziom na juniora C++?
Bo programuję prywatnie w tym od jakichś 5 lat i chciałbym się rozeznać w realnych wymaganiach.(patrzałem ogłoszenia i nic się w sumie nie dowiedziałem) Teraz jeszcze będę zaczynał studia więc pewnie dojdzie do tego kolejnych 5 niekomercyjnych lat programowania przed pierwszą prawdziwą pracą.
#programowanie #c++ #programista15k #cpp
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#programowanie #cpp

Mam do zrobienia kilka programów z wykorzystaniem języka C++ i Windows API. Wszystko opiera się na procesach.
Jest ktoś obeznany w tym temacie? Potrzebuję aby ktoś pomógł mi zrozumieć kilka kwestii.
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@SkorpionX @luigi_pl Czy takie tworzenie nowych procesów jest ok? Można zrobić to jakoś prościej?
Mam też pytanie odnośnie SpinLock. Jak zrobić aby jeden obiekt spinLock był widoczny dla dwóch procesów? Czy może ustawiać jakąś flage na konkretnym miejscu w pamięci?
  • Odpowiedz