Gọi qua lại giữa code C và C++

Image

Chúng ta vẫn biết rằng C++ là “C with Classes”, vẫn thường xuyên viết code trộn giữa C++ và C. Trong C++ chúng ta gọi C dễ dàng, ví dụ như hàm printf của stdio.h được gọi trong code C++ bình thường. Tuy nhiên, ở chiều ngược lại, trong C mà muốn gọi C++ thì đòi hỏi phải nắm được một số quy tắc.

Continue reading “Gọi qua lại giữa code C và C++”

Advertisements

Autolist design pattern

flower-pattern-illustrations-design-patterns-paintings-367221_50

Là một game programmer với vũ khí là C++, bạn hay có nhu cầu muốn tất cả các đối tượng thuộc kiểu lớp A trong chương trình đều được lưu vào trong một danh sách để tiện quản lý.

Nếu có nhiều lớp như lớp A, bạn sẽ phải tạo nhiều danh sách (có thể là mảng hoặc vector, map, set, …) => viết code nhiều, copy & paste nhiều => tiềm ẩn bug. Chưa kể trong trường hợp có lớp B kế thừa lớp A, thì phải nhớ thêm đối tượng kiểu B vào danh sách kiểu A (do một đối tượng kiểu B thì cũng thuộc kiểu A). Đừng xoắn nếu tôi lại nói có kiểu C kế thừa kiểu B :)

Vậy thì Autolist là một design pattern giúp bạn làm công việc trên hết sức tiện lợi. Bạn viết lớp Autolist như sau:

Continue reading “Autolist design pattern”

Sức mạnh của template trong C++

Có một số các phép tính toán tuy phức tạp, nhưng với input là những hằng số, nếu lợi dụng template khéo léo, chương trình sẽ chạy rất nhanh.

Trước hết lấy ví dụ đơn giản: tính số Fibonaci thứ 40. Có hai cách dễ thấy ngay: đệ quy, vòng lặp. Giờ ta tìm hiểu cách dùng template:

Continue reading “Sức mạnh của template trong C++”

Xử lý ngoại lệ trên Symbian (Leave-Symbian exeption)

Bài viết sưu tầm từ trang này.

1. Cơ chế bắt lỗi trên Symbian

Nếu bạn đã quen với lập trình C++ hay Java thì exeption handling là một khái niệm chẳng xa lạ gì. Đây là cơ chế giúp ta quản lý các lỗi phát sinh. Lúc Symbian được thiết kế thì cơ chế exeption chưa được giới thiệu trong C++ hơn nữa sau này khi được giới thiệu thì nó cũng tỏ ra không phù hợp trong môi trường hạn chế về xử lý và bộ nhớ như Symbian bởi chúng làm tăng đáng kể kích thước mã biên dịch và tốn nhiều RAM, lại không thật sự hiệu quả.

Continue reading “Xử lý ngoại lệ trên Symbian (Leave-Symbian exeption)”

Có bao nhiêu vị trí đặt từ khóa “const” trong C++? (Sưu tầm)

Điều đầu tiên khi lập trình viên nghĩ đến từ khóa const là những gì không thể thay đổi được (hằng số). Bạn không thể thay đổi giá trị của một hằng số. Bạn có thể dùng từ khóa const để chỉ ra rằng một giá trị nào đó sẽ không thể thay đổi được trong suốt chương trình của bạn. Một câu hỏi dành cho bạn:

Bạn có thể đặt từ khóa “const” ở những nơi nào trong chương trình của mình?

Để trả lời câu hỏi trên khi làm việc với ngôn ngữ lập trình (ở đây là C++), bạn cần phải trả lời được câu hỏi: “Tôi cần giá trị nào trở thành không thay đổi được?”.

Ở đây, trong bài viết này, xin liệt kê ra một số nơi bạn có thể đặt từ const.

Xem tiếp tại đây