Korzystam z programu Visual Studio 2012, a on ma przypadki, w których dodaliśmy parametry szablonów do klasy „tylko” w celu wprowadzenia „punktu szwu”, aby w teście jednostkowym mogliśmy zastąpić te części próbnymi obiektami. Jak zwykle wprowadzasz punkty szwu w C ++: używając interfejsów i / lub mieszając na podstawie niektórych …
Większość języków programowania funkcyjnego (np Common Lisp, Scheme / rakieta, Clojure, Haskell, Scala, Ocaml, SML) obsługuje niektórych funkcji wspólnego wyższego rzędu na listach, takich jak map, filter, takeWhile, dropWhile, foldl, foldr(patrz np Common Lisp, Scheme / rakieta, Clojure obok siebie dokumentacja , dokumentacja Haskell , Scala , OCaml i SML …
Według Herb Suttera należy preferować abstrakcyjne interfejsy (wszystkie czyste funkcje wirtualne) niż abstrakcyjne klasy w C ++, aby oddzielić implementację tak dalece, jak to możliwe. Chociaż osobiście uważam tę zasadę za bardzo przydatną, ostatnio dołączyłem do zespołu z wieloma programistami Java i w kodzie Java ta wytyczna wydaje się nie …
Studiuję OOP w C ++ i chociaż jestem świadomy definicji tych 3 pojęć, tak naprawdę nie jestem w stanie zrozumieć, kiedy i jak go używać. Użyjmy tej klasy na przykład: class Person{ private: string name; int age; public: Person(string p1, int p2){this->name=p1; this->age=p2;} ~Person(){} void set_name (string parameter){this->name=parameter;} void set_age …
Ostatnio przeprowadzałem kilka potrzebnych optymalizacji. Jedną rzeczą, którą robiłem, jest zmiana niektórych ostringstreams -> sprintfs. Sprint do zestawu std :: strings do tablicy w stylu ac, ala char foo[500]; sprintf(foo, "%s+%s", str1.c_str(), str2.c_str()); Okazuje się, że implementacja std :: string :: c_str () Microsoftu działa w stałym czasie (zwraca tylko …
Zamknięte . To pytanie jest oparte na opiniach . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby można było na nie odpowiedzieć faktami i cytatami, edytując ten post . Zamknięte 5 lat temu . Dużo pracuję w Pythonie i Javie, a oba te języki mają dość powszechne …
Zamknięte . To pytanie jest oparte na opiniach . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby można było na nie odpowiedzieć faktami i cytatami, edytując ten post . Zamknięte 5 lat temu . Moje zajęcia programistyczne w szkole to C ++, ale skończyłem pracę w C …
Pracuję jako agent / kierownik wypożyczalni w firmie wynajmującej samochody, która działa w systemie wynajmu napisanym w 1972 roku. Zdecydowałem, że może nadszedł czas na aktualizację. Dla odrobiny tła, oto krótki przykład szaleństwa, z którym mamy do czynienia codziennie w tym programie: Agent wypożyczający musi pamiętać, że drukowanie na jednym …
Zamknięte . To pytanie jest oparte na opiniach . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby można było na nie odpowiedzieć faktami i cytatami, edytując ten post . Zamknięte 5 lat temu . Firma, z którą współpracuję, poprosiła mnie o przeprowadzenie badań telefonicznych kandydatów, aby upewnić …
Podczas modelowania obiektu za pomocą dzieci często dołącza się dzieci za pomocą kompozycji jako członka klasy nadrzędnej. Czasami jednak dzieci muszą powiedzieć rodzicowi coś, muszą wywołać funkcję rodzica. Jak można to osiągnąć za pomocą C ++? Niektóre opcje to: Ustaw klasę nadrzędną na globalną, aby obiekty potomne mogły wywoływać funkcje …
Pierwotnie jest to część innego pytania. Dlaczego sizeofnazywany jest operatorem czasu kompilacji? Czy to właściwie nie jest operator czasu wykonywania? A jeśli rzeczywiście jest to operator czasu kompilacji, w jaki sposób pomaga w tworzeniu przenośnego kodu, który działa tak samo na różnych komputerach? Proszę wyjaśnić szczegółowo.
Nie mam specyficznego kontekstu, w którym zadaję to pytanie, ale podczas czytania książki dla początkujących na C ++ zauważyłem użycie zarówno manipulatora strumienia endl, jak i znaku zmiany linii podczas obchodzenia się z obiektem strumienia. Przykład jest następujący: cout << "Hello World" << endl; cout << "Hello World\n"; Moje pytania …
Poniższy kod powoduje wyciek pamięci: #include <iostream> #include <memory> #include <vector> using namespace std; class base { void virtual initialize_vector() = 0; }; class derived : public base { private: vector<int> vec; public: derived() { initialize_vector(); } void initialize_vector() { for (int i = 0; i < 1000000; i++) { …
Zauważyłem więc, że można uniknąć umieszczania funkcji prywatnych w nagłówkach, wykonując coś takiego: // In file pred_list.h: class PredicateList { int somePrivateField; friend class PredicateList_HelperFunctions; public: bool match(); } // In file pred_list.cpp: class PredicateList_HelperFunctions { static bool fullMatch(PredicateList& p) { return p.somePrivateField == 5; // or whatever } } …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.