Video: C++ 46: Lớp - class 2025
Các mẫu cấu trúc có nhiều cách sử dụng thú vị, chẳng hạn như tạo một kho dữ liệu không phụ thuộc vào một loại cụ thể nào. Ví dụ StructureTemplate cho thấy một ví dụ sử dụng.
#include bằng cách sử dụng không gian tên std; mẫu khối lượng cấu trúc {T chiều cao; T rộng; Chiều dài T; Tập () {height = 0; width = 0; (T H, T W, T L) {chiều cao = H; chiều rộng = W; chiều dài = L; chiều cao trở lại * chiều rộng * chiều dài;}}; int main () {Khối lượng đầu tiên; cout << "first volume:" << đầu tiên getvolume () << endl; Đầu tiên. chiều cao = 2; Đầu tiên. chiều rộng = 3; Đầu tiên. chiều dài = 4; cout << "first volume:" << đầu tiên getvolume () << endl; Thể tích thứ hai; cout << "second volume:" << thứ hai. getvolume (2, 1, 3 2, 4 3) << endl; cout << "height:" << giây. chiều cao << endl; cout << "width:" << second. chiều rộng << endl; cout << "length:" << second. chiều dài << endl; return 0;}
Trong trường hợp này, cấu trúc chứa các giá trị chiều cao, chiều rộng và chiều dài mà mã có thể sử dụng để xác định khối lượng. Cấu trúc bao gồm một constructor để khởi tạo các giá trị, vì vậy ngay cả khi ai đó gọi getvolume () mà không cần khởi tạo cấu trúc, sẽ không có gì xấu xảy ra.
Cấu trúc cho phép truy cập độc lập của mỗi giá trị dữ liệu. Bạn có thể đặt hoặc lấy chúng nếu cần.
Chức năng getvolume () bị quá tải. Bạn có thể gọi nó bằng hoặc không có giá trị đầu vào. Các mã trong main () kiểm tra cấu trúc kỹ lưỡng. Dưới đây là những gì bạn thấy dưới dạng đầu ra từ ví dụ này:
Thể tích đầu tiên: 0 Thể loại: 24 Thể tích: 28. 896 Chiều cao: 2. 1 Chiều rộng: 3. 2 Chiều dài: 4. 3
một mục đích thú vị. Tiêu chuẩn C ++ nói bạn không thể tạo ra một mẫu typedef. Ví dụ, mã sau đây tạo ra một lỗi khi bạn cố gắng biên dịch nó:
mẫu typedef bản đồ MyDef;
Khi bạn cố gắng biên dịch mã này trong Mã:: Blocks, bạn thấy lỗi sau:
lỗi: mẫu khai báo của 'typedef'
Tuy nhiên, bạn có thể định nghĩa một typedef bên trong một cấu trúc mẫu. Mã ví dụ StructureTemplate2 ở đây cho thấy cách.
#include #include bằng cách sử dụng không gian tên tiêu chuẩn; template struct myDef {typedef map Type;}; int main () {MyDef:: Loại hôn nhân; hôn nhân ["Tom"] = "Suzy"; hôn nhân ["Harry"] = "Harriet"; cout << hôn nhân ["Tom"] << endl; cout << hôn nhân ["Harry"] << endl; return 0;}
Ví dụ này khắc phục những hạn chế của C ++ bằng cách đặt typedef bên trong struct, MyDef. Cấu trúc tương tự có thể chứa bất kỳ số mục nhập typedef nào.
Sử dụng một typedef theo cách này làm cho nó dễ dàng hơn để làm việc với bản đồ.Tất cả bạn cần phải lo lắng về là loại giá trị - loại khóa đã được định nghĩa là chuỗi.