Mục lục:
- Lệnh C + + goto
- Toán tử 999 là toán tử duy nhất của C và C ++. Nó hoạt động như sau:
- Vấn đề với các loại liệt kê nằm trong việc thực hiện: Thay vì tạo một kiểu đúng, C ++ sử dụng các số nguyên. Trong trường hợp này, BLACK được gán giá trị 0, BLUE được gán 1, GREEN2, v.v.
- Pure ảo chức năng trong C + +
- Lớp C + +
- Một lớp có thể thực sự mở rộng nhiều hơn một lớp cơ sở. Điều này nghe đơn giản nhưng có thể có được khá phức tạp khi hai lớp cơ sở có chức năng thành viên với cùng tên. Thậm chí tệ hơn là cả hai lớp cơ sở đều là lớp con của một lớp phổ biến.
- Các nhà sản xuất C ++ nhận thấy các chức năng tương tự như sau:
- template T max (T t1, T t2) {if (t1> t2) {return t1;} return t2;}
Video: Warlock | Henry Fonda | WESTERN MOVIE | Full Length Cowboy Film | English 2025
Ngôn ngữ C ++ có rất nhiều tính năng bắt đầu lập trình không thể hiểu được. May mắn thay, bạn không cần phải nắm vững tất cả các tính năng của ngôn ngữ để viết các chương trình lớn trên thực tế. Sau đây là mười tính năng mà bạn có thể muốn nhìn về phía trước, chỉ trong trường hợp bạn nhìn thấy chúng trong các chương trình của người khác.
Lệnh C + + goto
Lệnh này đi ngược lại C, tiền thân của C ++. Về nguyên tắc, sử dụng lệnh này rất dễ. Bạn có thể đặt nhãn goto; bất cứ nơi nào bạn muốn. Khi C + + đi qua lệnh này, kiểm soát sẽ truyền ngay tới nhãn, như đã trình bày trong đoạn mã này:
cho (;) {nếu (biểu hiện điều kiện) {goto outahere;} // … bất cứ điều gì bạn muốn …} outahere: // … chương trình tiếp tục ở đây …Trong thực tế, tuy nhiên, goto giới thiệu rất nhiều cách để vít lên. Trong mọi trường hợp, nó không mất nhiều thời gian trước khi các lập trình viên nhận thấy rằng hai sử dụng phổ biến nhất của goto là để thoát khỏi vòng lặp và để đi đến trường hợp tiếp theo trong vòng một. Ủy ban Tiêu chuẩn C đã giới thiệu sự phá vỡ và tiếp tục và hầu như loại bỏ hoàn toàn sự cần thiết cho lệnh goto.
Toán tử 999 là toán tử duy nhất của C và C ++. Nó hoạt động như sau:
int n = (có điều kiện)? biểu thức1: expression2; Cái gì? nhà điều hành đầu tiên đánh giá điều kiện. Nếu điều kiện là đúng, thì giá trị của biểu thức bằng với giá trị của biểu thức1; nếu không, nó bằng với giá trị của biểu thức2. Ví dụ, bạn có thể thực hiện hàm tối đa () như sau:
int max (int n1, int n2) {return (n1> n2)? n1: n2;}
Toán tử bậc ba có thể được áp dụng cho bất kỳ loại số nào nhưng không thể quá tải. Toán tử thứ ba thực sự là một biểu thức - không phải là một câu lệnh điều khiển như một if.
Các kiểu đã liệt kê trong C ++Ý tưởng đơn giản là bạn có thể định nghĩa các hằng số và để cho C ++ gán các giá trị như sau:
enum Colors {BLACK, BLUE, GREEN, YELLOW, RED}; Màu sắc myColor = Màu đen;
Vấn đề với các loại liệt kê nằm trong việc thực hiện: Thay vì tạo một kiểu đúng, C ++ sử dụng các số nguyên. Trong trường hợp này, BLACK được gán giá trị 0, BLUE được gán 1, GREEN2, v.v.
enum class Colors {BLACK, BLUE, GREEN, YELLOW, RED}; Màu sắc myColor = Màu sắc:: BLACK;
Trong phiên bản này, Màu sắc là một kiểu mới.Mỗi hằng số, màu đen, màu xanh lá cây, v.v … là thành viên của loại Màu. Bạn vẫn có thể cast một đối tượng của lớp Colors thành một int, nhưng không được phép sử dụng một diễn viên tiềm ẩn.
Không gian tên C ++Có thể đưa các thực thể khác nhau trong hai thư viện khác nhau có cùng tên. Ví dụ, hàm grade () trong thư viện Student có thể gán một lớp, trong khi hàm grade () trong thư viện CivilEngineering có thể thiết lập độ dốc ở cạnh một ngọn đồi. Để tránh vấn đề này, C ++ cho phép lập trình đặt mã của mình vào một không gian tên riêng biệt. Do đó, lớp trong không gian tên của Học sinh khác với lớp trong CivilEngineering.
Không gian tên ở trên và ngoài tên lớp. Lớp () thành viên chức năng của lớp BullDozer trong không gian tên CivilEngineering có tên mở rộng CivilEngineering:: BullDozer:: grade ().
Tất cả các đối tượng thư viện và các chức năng nằm trong không gian tên std. Câu lệnh ở phần đầu của mẫu chương trình bằng cách sử dụng không gian tên std; nói rằng nếu bạn không nhìn thấy đối tượng được chỉ định trong không gian tên mặc định, sau đó đi tìm trong tiêu chuẩn.
Pure ảo chức năng trong C + +
Bạn không cần phải xác định một chức năng kê khai ảo. Một chức năng không xác định được gọi là
chức năng thành viên ảo tinh khiết
. Vào thời điểm đó, tuy nhiên, mọi thứ trở nên phức tạp. Ví dụ, một lớp với một hoặc nhiều hàm ảo ảo được gọi là trừu tượng và không thể được sử dụng để tạo ra một đối tượng. Giải quyết vấn đề này sau khi bạn cảm thấy thoải mái với các chức năng ảo và ràng buộc vào cuối.
Lớp C + +
Hầu hết các ngôn ngữ bao gồm một lớp chuỗi như một kiểu nội tại để xử lý các chuỗi kí tự một cách dễ dàng. Về lý thuyết, lớp chuỗi nên làm tương tự cho C ++. Trong thực tế, tuy nhiên, nó không phải là đơn giản. Bởi vì chuỗi không phải là một loại nội tại, các thông báo lỗi mà trình biên dịch tạo ra khi có điều gì sai trái giống như những gì được liên kết với các lớp do người dùng định nghĩa. Đối với người mới bắt đầu, những thông điệp này có thể rất khó giải thích. chuỗi thậm chí không phải là một lớp. Đó là một thể hiện của một lớp mẫu. Các thông báo lỗi có thể được ngoạn. Đa thừa kế trong C + +
Một lớp có thể thực sự mở rộng nhiều hơn một lớp cơ sở. Điều này nghe đơn giản nhưng có thể có được khá phức tạp khi hai lớp cơ sở có chức năng thành viên với cùng tên. Thậm chí tệ hơn là cả hai lớp cơ sở đều là lớp con của một lớp phổ biến.
Trong thực tế, rất nhiều vấn đề nảy sinh rằng C ++ chỉ là ngôn ngữ C giống như hỗ trợ đa thừa kế. Java và C #, cả hai ngôn ngữ có nguồn gốc từ C ++, đã quyết định bỏ hỗ trợ đa thừa kế.
Các mẫu C ++ và Standard Template Library
Các nhà sản xuất C ++ nhận thấy các chức năng tương tự như sau:
int max (int n1, int n2) {if (n1> n2) {return n1;} return n2;} double max (double n1, double n2) {if (n1> n2) (return n1;} return n2;} char max (char n1, char n2) {if (n1> n2) {return n1;} return n2;}
"Nó sẽ không mát," người ta nói với người khác, "nếu bạn có thể thay thế kiểu bằng kiểu giả T mà bạn có thể xác định tại thời gian biên dịch?"Trước khi bạn biết điều này, các mẫu Presto trở thành một phần của C ++:
template T max (T t1, T t2) {if (t1> t2) {return t1;} return t2;}
Bây giờ người lập trình có thể tạo một max (int, int) bằng cách thay thế T bằng int và biên dịch kết quả, tạo một max (double, double) bằng cách thay thế T bằng double, vv. Ủy ban Tiêu chuẩn thậm chí đã phát hành toàn bộ thư viện các lớp học, được gọi là Thư viện Tiêu chuẩn Tiêu chuẩn (STL), dựa trên các lớp mẫu.
Tuy nhiên, đối với người mới bắt đầu, đối tượng của các lớp mẫu bắt đầu có cú pháp rất phức tạp. Ngoài ra, các lỗi mà trình biên dịch tạo ra khi bạn nhận được một bản mẫu không đúng chuẩn đang làm bối rối cho một chuyên gia, không bao giờ tâm trí một người mới bắt đầu. Đây chắc chắn là một chủ đề cần chờ đợi cho đến khi bạn cảm thấy thoải mái với ngôn ngữ cơ bản.