Według tego, co czytam, kompilator nie jest zobowiązany do zastąpienia wywołanie funkcji inline funkcji z jej ciała, ale zrobi to, jeśli to możliwe. To dało mi thinking- dlaczego mamy słowo inline, czy tak jest w istocie? Dlaczego nie wszystkie funkcje Funkcja inline domyślnie i niech postać kompilatora, czy można go …
Jest podobno , że wczesne C ++ implementacje miały dot operatora o udostępnienie przestrzeni nazw. Istnieje opinia, że kropka jest wygodniejsza niż nowoczesny operator dwukropka. Jakie było uzasadnienie wprowadzenia podwójnego dwukropka?
Mam trochę dyskusji z przyjacielem, czy te dwie praktyki są tylko dwiema stronami tej samej monety, czy też jedna z nich jest naprawdę lepsza. Mamy funkcję, która pobiera parametr, wypełnia jego element członkowski, a następnie zwraca go: Item predictPrice(Item item) Uważam, że ponieważ działa na tym samym przekazywanym obiekcie, nie …
Próbuję zrozumieć, w jaki sposób budowane są ramki stosu i które zmienne (parametry) są wypychane do stosu w jakiej kolejności? Niektóre wyniki wyszukiwania wykazały, że kompilator C / C ++ decyduje na podstawie operacji wykonywanych w ramach funkcji. Na przykład, jeśli funkcja miała po prostu zwiększyć przekazaną wartość int o …
W tym semestrze na studiach mam programowanie obiektowe z kursem c ++ i uczyliśmy się o funkcjach przyjaciela. Instynktownie ich nie lubię za to, że potrafią ominąć zabezpieczenia zapewniane przez enkapsulację i ukrywanie danych. Przeczytałem kilka artykułów w Internecie, a niektórzy uważali, że to dobry pomysł, jeśli ma uzasadnione zastosowanie. …
Nigdy nie zrozumiałem, dlaczego kompilatory C i C ++ próbują odzyskać po błędach i kontynuować analizę. Prawie zawsze pierwszy błąd generuje strumień fałszywych błędów, które znikną, gdy tylko pierwszy zostanie naprawiony. Po kilku latach doświadczenia po prostu przestałem patrzeć na każdy błąd oprócz pierwszego z każdego pliku. Ponownie uruchamiam kompilator, …
Rozumiem, że „idiom” to wspólna operacja lub wzorzec, którego w danym języku nie upraszcza składnia języka podstawowego, taka jak przyrost liczby całkowitej: i = i + 1; W języku C ++ ten idiom jest uproszczony przez operatora: ++i; Kiedy jednak ktoś używa terminu „idiomatyczny”, nie jestem pewien, jak go zrozumieć. …
Dlaczego musimy dołączyć zarówno pliki, jak .hi .cpppliki, podczas gdy możemy sprawić, że będzie działać wyłącznie poprzez dołączenie .cpppliku? Na przykład: tworzenie file.hdeklaracji zawierających, następnie tworzenie file.cppdefinicji zawierających i uwzględnianie obu w main.cpp. Alternatywnie: tworzenie file.cppdeklaracji / definicji zawierających (bez prototypów), w tym main.cpp. Oba działają dla mnie. Nie widzę …
W obecnej formie to pytanie nie pasuje do naszego formatu pytań i odpowiedzi. Oczekujemy, że odpowiedzi poparte będą faktami, referencjami lub wiedzą specjalistyczną, ale to pytanie prawdopodobnie będzie wymagało debaty, argumentów, ankiet lub rozszerzonej dyskusji. Jeśli uważasz, że to pytanie można poprawić i ewentualnie ponownie otworzyć, odwiedź centrum pomocy w …
Dlaczego książki mówią: „kompilator przydziela miejsce na zmienne w pamięci”. Czy nie jest to plik wykonywalny, który to robi? Mam na przykład na myśli, jeśli napiszę następujący program, #include <iostream> using namespace std; int main() { int foo; return 0; } i skompiluj go i uzyskaj plik wykonywalny (niech to …
W świecie C ++ i Java widzę wiele możliwych do natychmiastowego utworzenia klas, które nie mają żadnego stanu. Naprawdę nie mogę zrozumieć, dlaczego ludzie to robią, mogliby po prostu użyć przestrzeni nazw z darmowymi funkcjami w C ++ lub klasy z prywatnym konstruktorem i tylko statycznymi metodami w Javie. Jedyną …
W c ++ operator * może być przeciążony, na przykład iteratorem, ale operator strzałki (->) (. *) Nie działa z klasami, które przeciążają operatora *. Wyobrażam sobie, że preprocesor mógłby z łatwością zastąpić wszystkie wystąpienia -> znakiem (* left) .right, i dzięki temu iteratory byłyby łatwiejsze do zaimplementowania. czy istnieje …
Naprawdę podoba mi się prosta i przejrzysta natura C: kiedy piszę kod C, czuję się nieobciążony „nieszczelnymi abstrakcjami” i prawie zawsze potrafię zgadywać, co do zespołu, który tworzę. Podoba mi się również prosta, znana składnia C. Jednak C nie ma tych prostych, pomocnych rysunków, które C ++ oferuje jak klasy, …
Oglądałem wywiad z Herbem Sutterem na Channel9 i wspomniał na końcu filmu, że składnia od lewej do prawej będzie na szczycie listy życzeń przyszłego standardu C ++ (chociaż przyznaje, że modyfikuje C ++ w ten sposób stworzyłoby zupełnie inną bestię). Oprócz: bardziej zrozumiałe dla ludzi, wyraźniejsze gołym okiem; np //C …
Im więcej dowiaduję się o różnych paradygmatach programowania, takich jak programowanie funkcjonalne, tym bardziej zaczynam kwestionować mądrość koncepcji OOP, takich jak dziedziczenie i polimorfizm. Po raz pierwszy dowiedziałem się o dziedziczeniu i polimorfizmie w szkole, a polimorfizm wydawał się wtedy wspaniałym sposobem na pisanie kodu ogólnego, który pozwalał na łatwą …
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.