Những lỗi ngớ ngẫn mà mọi người đã gặp khi lập trình C++
Hiện giờ mình đang làm với anh Đạt khóa học lập trình C++, cần tham khảo một số lỗi lập trình khi học tập hay khi làm việc với C++. Các lỗi này sẽ giúp cho khóa học tốt hơn, hy vọng mọi người sẽ tham gia
Ví dụ trước:
Tại sao mình không thể khai báo như sau:
B* p1, p2;
p1 = new B(); //đúng
p2 = new B(); // sai
Do khi khai báo B* p1, p2; .p1 là con trỏ trỏ đến B, p2 là một đối tượng B.
Các câu hỏi tổng hợp được: https://docs.google.com/document/d/1nMi2swT_EBP1DPq5qfylvE-VeUm74ee9dOVMi-Ct220/edit#heading=h.bfnnm3l0osb0
Hoàng đưa thêm danh sách những câu hỏi em đã soạn len xem thử mọi người có nhận xét gì không
Trên mạng có khá nhiều bài tổng hợp, ví dụ như:
Toptal Engineering Blog
Top 10 Most Common C++ Mistakes That Developers Make
C++ is a general purpose programming language that offers great flexibility when it comes to system programming and application development. The language, however, comes with some pitfalls requiring attention from developers to ensure quality...
Eight C++ programming mistakes the compiler won’t catch
C++ is a complex language, full of subtle traps for the unwary. There is an almost infinite number of ways to screw things up. Fortunately, modern compilers are pretty good at detecting a large num…
http://alumni.cs.ucr.edu/~nxiao/cs10/errors.htm
Hồi trước code C++ toàn bị dính lỗi:
Giờ không biết ide có thông minh hơn chưa.
101 lỗi luôn anh, tha hồ làm
Đã update một số câu hỏi, mọi người cho nhận xét nhé cảm ơn
1/ Hồi trc hay bị đặt semicolon như thế nàu
for(); {}
hoặcif(); {}
Thế là nó cứ chạy ngon ơ mà chả biết tại sao sai kq
2/ Chưa cấp phát mà đã xài con trỏ ~> Crash
3/ Ở phần case, nếu khai báo biến thì phải gom nó vô thành 1 scope.
Cái ví dụ này hay, nên thêm vào này @Rok_Hoang
Cái này cho vào phần con trỏ, @nguyenchiemminhvu
Chuẩn Lần trước Đạt làm videos không biết có nói tới chỗ này không, nhung đây là một điểm rất hay, Vũ note lại nhé.
Thanks mọi người, Videos này Đạt muốn làm chất lượng hơn để người học tiếp cận vấn đề dễ hơn
IDE giờ vẫn chưa thông minh hơn nha anh, bằng chứng là em vẫn còn dính cái lỗi ngớ ngẫn đó :))
thiếu ; sau struct hay class.
@Rok_Hoang thêm cái này vào nhé, anh cũng hay nhắc mọi người cái này
Lỗi này gặp khá thường xuyên ở newbie
really?
Anh chưa bị lỗi này bao giờ, nhưng có vẻ hợp lý
Cái này chủ yếu là do thói quen thôi anh. Cứ thấy người ta viết cú pháp cấp phát đúng là cũng bắt chước viết theo.
Mấy đứa ở trường em cũng bị 1 thói quen là khi học thầy cô hay dùng vòng lặp for
từ đó, bọn nó cứ code đến vòng lặp for là cũng
mà không nghĩ xem vòng for cần chạy từ giá trị nào đến giá trị nào, hay là cái biểu thức điều kiện trong for cần đặt như thế nào mà cứ là i < n miết.
Vậy lúc dạy
for
anh sẽ nhắc về vấn đề này.Cảm ơn bạn nhé
Ngoài những synax error này ra. Hy vọng bạn sẽ đóng góp những lỗi logic khác hay một số kinh nghiệm xương máu mà bạn đã từng gặp
e thấy cái này có sai đâu ạ?
e test thử thì vẫn chạy ok mà a.
Lỗi này chắc là lỗi ngữ nghĩa.
Cái này chính xác với tất cả ngôn ngữ
Không sai về cú pháp nhưng nó sai như thế này:
Thuộc về lỗi chưa hủy vùng nhớ mà đã trỏ đến quản lý vùng địa chỉ khác.
à ý em là em thấy mấy đứa học trường em nó bị thầy cô áp đặt tư duy ấy anh. Cứ đến đoạn cần dùng vòng lặp for là cứ cho i chạy từ 1 đến n mà lại không nghĩ xem chạy từ 1 đến n để làm gì.
Ví dụ trong khi bài toán chỉ cần như thế này:
thì vì thói quen nên lại viết thành
Thế nên nó mới gọi là lỗi ngớ ngẩn
Thì ý mình cũng vậy mà. Chỉ vòng lập for lần đầu như thế nào thì lần sau nó sẽ viết y như vậy mà không suy nghĩ điều kiện đúng sai ntn