Bài Giảng Định Nghĩa Toán Tử Trên Lớp - Class Opera Tors

63 355 1
Bài Giảng Định Nghĩa Toán Tử Trên Lớp - Class Opera Tors

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Ch¬ng 4 ®Þnh nghÜa to¸n tö trªn líp (class operators) Môc ®Ých ch¬ng nµy : 1. C¸ch ®Þnh nghÜa c¸c phÐp to¸n cho kiÓu d÷ liÖu líp vµ cÊu tróc 2. C¸c to¸n tö chuyÓn kiÓu ¸p dông cho kiÓu d÷ liÖu líp 1. Giíi thiÖu chung Thùc ra, vÊn ®Ò ®Þnh nghÜa chång to¸n tö ®· tõng cã trong C, vÝ dô trong biÓu thøc: a + b ký hiÖu + tuú theo kiÓu cña a vµ b cã thÓ biÓu thÞ: 1. phÐp céng hai sè nguyªn, 2. phÐp céng hai sè thùc ®é chÝnh x¸c ®¬n (float) 3. phÐp céng hai sè thùc chÝnh x¸c ®«i (double) 4. phÐp céng mét sè nguyªn vµo mét con trá. Trong C++, cã thÓ ®Þnh nghÜa chång ®èi víi hÇu hÕt c¸c phÐp to¸n (mét ng«i hoÆc hai ng«i) trªn c¸c líp, nghÜa lµ mét trong sè c¸c to¸n h¹ng tham gia phÐp to¸n lµ c¸c ®èi tîng. §©y lµ mét kh¶ n¨ng m¹nh v× nã cho phÐp x©y dùng trªn c¸c líp c¸c to¸n tö cÇn thiÕt, lµm cho ch¬ng tr×nh ®îc viÕt ng¾n gän dÔ ®äc h¬n vµ cã ý nghÜa h¬n. Ch¼ng h¹n, khi ®Þnh nghÜa mét líp complex ®Ó biÓu diÔn c¸c sè phøc, cã thÓ viÕt trong C++: a+b, a-b, a*b, a/b víi a,b lµ c¸c ®èi tîng complex. §Ó cã ®îc ®iÒu nµy, ta ®Þnh nghÜa chång c¸c phÐp to¸n +, -, * vµ / b»ng c¸ch ®Þnh nghÜa ho¹t ®éng cña tõng phÐp to¸n gièng nh ®Þnh nghÜa mét hµm, chØ kh¸c lµ ®©y lµ hµm to¸n tö (operator function). Hµm to¸n tö cã tªn ®îc ghÐp bëi tõ kho¸ operator vµ ký hiÖu cña phÐp to¸n t¬ng øng. B¶ng 4.1 ®a ra mét sè vÝ dô vÒ tªn hµm to¸n tö. Hµm to¸n tö cã thÓ dïng nh lµ mét hµm thµnh phÇn cña mét líp hoÆc lµ hµm tù do; khi ®ã hµm to¸n tö ph¶i ®îc khai b¸o lµ b¹n cña c¸c líp cã c¸c ®èi tîng mµ hµm thao t¸c. -109- §Þnh nghÜa to¸n tö trªn líp -110- §Þnh nghÜa to¸n tö trªn líp Tªn hµm Dïng ®Ó operator+ ®Þnh nghÜa phÐp + operator* ®Þnh nghÜa phÐp nh©n * operator/ ®Þnh nghÜa phÐp chia / operator+= ®Þnh nghÜa phÐp tù céng += operator!= ®Þnh nghÜa phÐp so s¸nh kh¸c nhau B¶ng 4.1 Mét sè tªn hµm to¸n tö quen thuéc 2. VÝ dô trªn líp sè phøc 2.1 Hµm to¸n tö lµ hµm thµnh phÇn Trong ch¬ng tr×nh complex1.cpp to¸n tö + gi÷a hai ®èi tîng complex ®îc ®Þnh nghÜa nh mét hµm thµnh phÇn. Hµm to¸n tö thµnh phÇn cã mét tham sè ngÇm ®Þnh lµ ®èi tîng gäi hµm nªn chØ cã mét tham sè têng minh. VÝ dô 4.1 /*complex1.cpp*/ #include #include #include class complex { float real, image; public: complex(float r=0, float i =0) { real = r; image = i; } void display() { cout[...]... hiệu mới -1 2 5- Định nghĩa toán tử trên lớp Một số toán tử không thể định nghĩa chồng (chẳng hạn toán tử truy nhập thành phần cấu trúc., toán tử phạm vi ::, toán tử điều kiện ? :) và có một số toán tử ta phải tuân theo các ràng buộc sau: (i) phép =, [] nhất định phải đợc định nghĩa nh hàm thành phần của lớp (ii)phép > dùng với cout và cin phải đợc định nghĩa nh hàm bạn (iii) hai phép toán ++ và... hàm toán tử khác nhau Các toán tử đợc định nghĩa chồng phải bảo toàn số ngôi của chính toán tử đó theo cách hiểu thông thờng, ví dụ: có thể định nghĩa toán tử - một ngôi và hai ngôi trên lớp tơng ứng với phép đảo dấu (một ngôi) và phép trừ số học (hai ngôi), nhng không thể định nghĩa toán tử gán một ngôi, còn ++ lại cho hai ngôi Nếu làm vậy, chơng trình dịch sẽ hiểu là tạo ra một ký hiệu phép toán. .. tiện cho các toán tử đợc định nghĩa chồng Ví dụ: a+3.5 khác với 3.5+a ở đây a là một đối tợng complex nào đó Cần lu ý rằng không nên định nghĩa những hàm hàm toán tử khác nhau cùng làm những công việc giống nhau vì dễ xảy ra nhập nhằng Chẳng hạn, -1 2 6- Định nghĩa toán tử trên lớp đã có một hàm operator+ là một hàm thành phần có tham số là đối tợng complex thì không đợc định nghĩa thêm một hàm operator+... ngôi nh: *,/,%,+ ,-, ,,=,==,!=,&,|,^,&&,|| Hai toán hạng tham gia các phép toán không nhất thiết phải cùng kiểu, mặc dù trong thực tế sử dụng thì thờng là nh vậy Nh vậy chỉ cần một trong hai đối số của hàm toán tử tơng ứng là đối tợng là đủ Các phép gán Các toán tử gán gồm có: =,+= ,-= ,*=,/=,%=,>>=,

Ngày đăng: 18/10/2015, 23:17

Từ khóa liên quan

Mục lục

  • 1. Giới thiệu chung

  • 2. Ví dụ trên lớp số phức

    • 2.1 Hàm toán tử là hàm thành phần

    • 2.2 Hàm toán tử là hàm bạn

    • 3. Khả năng và giới hạn của định nghĩa chồng toán tử

      • Phần lớn toán tử trong C++ đều có thể định nghĩa chồng

      • Trường hợp các toán tử ++ và --

      • Lựa chọn giữa hàm thành phần và hàm bạn

      • 4. Chiến lược sử dụng hàm toán tử

      • 5. Một số ví dụ tiêu biểu

        • 5.1 Định nghĩa chồng phép gán =

        • 5.2 Định nghĩa chồng phép []"

        • 5.3 Định nghĩa chồng << và >>

        • 5.4 Định nghĩa chồng các toán tử new và delete

        • 5.5 Phép nhân ma trận véc tơ

        • 6. Chuyển đổi kiểu

          • 6.1 Hàm toán tử chuyển kiểu ép buộc

            • 6.1.1 Hàm toán tử chuyển kiểu trong lời gọi hàm

            • 6.1.2 Hàm toán tử chuyển kiểu trong biểu thức

            • 6.2 Hàm toán tử chuyển đổi kiểu cơ sở sang kiểu lớp

              • 6.2.1 Hàm thiết lập trong các chuyển đổi kiểu liên tiếp

              • 6.2.2 Lựa chọn giữa hàm thiết lập và phép toán gán

              • 6.2.3 Sử dụng hàm thiết lập để mở rộng ý nghĩa một phép toán

              • 6.3 Chuyển đổi kiểu từ lớp này sang một lớp khác

                • 6.3.1 Hàm toán tử chuyển kiểu bắt buộc

                • 6.3.2 Hàm thiết lập dùng làm hàm toán tử

                • 7. Tóm tắt

                  • 7.1 Ghi nhớ

Tài liệu cùng người dùng

Tài liệu liên quan