1. Trang chủ
  2. » Thể loại khác

Nạp chồng toán tử và Nạp chồng hàm trong C++ | 101 bài hướng dẫn C++ hay nhất PDF

7 320 1

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 371,47 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nạp chồng toán tử và Nạp chồng hàm trong C++ C++ cho phép bạn xác định nhiều hơn một định nghĩa cho một tên hàm hoặc một toán tử trong cùng phạm vi scope, được gọi tương ứng là Nạp chồn

Trang 1

Nạp chồng toán tử và Nạp chồng hàm

trong C++

C++ cho phép bạn xác định nhiều hơn một định nghĩa cho một tên hàm hoặc một toán tử trong

cùng phạm vi (scope), được gọi tương ứng là Nạp chồng hàm (function overloading) và Nạp

chồng toán tử (operator overloading) trong C++

Một khai báo nạp chồng là một khai báo mà đã được khai báo với cùng tên như một khai báo được khai báo trước đó trong cùng phạm vi, ngoại trừ rằng: cả hai khai báo có các tham số khác nhau và định nghĩa khác nhau

Khi bạn gọi một hàm nạp chồng hoặc một toán tử nạp chồng, thì compiler quyết định định nghĩa thích hợp nhất để sử dụng bằng việc so sánh các kiểu tham số bạn đã sử dụng để gọi hàm hoặc toán tử với các kiểu tham số đã được xác định trong các định nghĩa Tiến trình lựa chọn hàm nạp

chồng hoặc toán tử nạp chồng thích hợp nhất này được gọi là overload resolution - phân giải

nạp chồng

Nạp chồng hàm trong C++

Bạn có thể có nhiều định nghĩa cho cùng tên hàm trong cùng phạm vi Định nghĩa của hàm phải khác lẫn nhau về kiểu và/hoặc số tham số trong danh sách tham số Bạn không thể nạp chồng các khai báo hàm mà chỉ khác nhau ở kiểu trả về

Trong ví dụ sau, cùng một hàm print() được sử dụng để in các kiểu dữ liệu khác nhau:

#include <iostream>

using namespace std;

class printData

{

public:

void print(int i) {

cout << "Printing int: " << i << endl;

}

void print(double f) {

Trang 2

cout << "Printing float: " << f << endl;

}

void print(char* c) {

cout << "Printing character: " << c << endl;

}

};

int main(void)

{

printData pd;

// Call print to print integer

pd.print( );

// Call print to print float

pd.print( 500.263 );

// Call print to print character

pd.print( "Hello C++" );

return ;

}

Khi code trên được biên dịch và thực thi, nó cho kết quả sau:

Printing int: 5

Printing float: 500.263

Printing character: Hello C++

Nạp chồng toán tử trong C++

Bạn có thể định nghĩa lại hoặc nạp chồng hầu hết các toán tử có sẵn trong C++ Vì thế, một lập trình viên có thể sử dụng các toán tử với kiểu tự định nghĩa (user-defined)

Nạp chồng toán tử trong C++ là các hàm với tên đặc biệt: Tên hàm là từ khóa operator theo sau là

Trang 3

Box operator+(const Box &);

Khai báo toán tử + để cộng hai đối tượng Box và trả về đối tượng Box cuối cùng Hầu hết toán tử nạp chồng có thể được định nghĩa dưới dạng: các hàm không có thành viên (non-member) hoặc các hàm thành viên lớp Trong trường hợp trên, chúng ta định nghĩa hàm ở dạng non-member của một lớp, thì sau đó chúng ta phải truyền hai tham số cho mỗi toán hạng, như sau:

Box operator+(const Box &, const Box &);

Ví dụ sau minh họa khái niệm nạp chồng toán tử bởi sử dụng một hàm thành viên Ở đây, một đối tượng được truyền như là một tham số mà các thuộc tính của nó sẽ được truy cập bởi sử dụng đối

tượng này, đối tượng mà sẽ gọi toán tử này có thể được truy cập bởi sử dụng toán tử this, như

sau:

#include <iostream>

using namespace std;

class Box

{

public:

double getVolume(void)

{

return length * breadth * height;

}

void setLength( double len )

{

length = len;

}

void setBreadth( double bre )

{

breadth = bre;

}

Trang 4

void setHeight( double hei )

{

height = hei;

}

// Overload + operator to add two Box objects

Box operator+(const Box & b)

{

Box box;

box.length = this->length + b.length;

box.breadth = this->breadth + b.breadth;

box.height = this->height + b.height;

return box;

}

private:

double length; // Length of a box

double breadth; // Breadth of a box

double height; // Height of a box

};

// Main function for the program

int main( )

{

Box Box1 ; // Declare Box1 of type Box

Box Box2 ; // Declare Box2 of type Box

Box Box3 ; // Declare Box3 of type Box

double volume = 0.0 ; // Store the volume of a box here

// box 1 specification

Box1 setLength( 6.0 );

Box1 setBreadth( 7.0 );

Box1 setHeight( 5.0 );

Trang 5

Box2 setBreadth( 13.0 );

Box2 setHeight( 10.0 );

// volume of box 1

volume = Box1 getVolume();

cout << "Volume of Box1 : " << volume <<endl;

// volume of box 2

volume = Box2 getVolume();

cout << "Volume of Box2 : " << volume <<endl;

// Add two object as follows:

Box3 Box1 Box2 ;

// volume of box 3

volume = Box3 getVolume();

cout << "Volume of Box3 : " << volume <<endl;

return ;

}

Khi code trên được biên dịch và thực thi, nó cho kết quả sau:

Volume of Box1 210

Volume of Box2 1560

Volume of Box3 5400

Toán tử có thể nạp chồng và không thể nạp chồng

trong C++

Bảng dưới liệt kê danh sách các toán tử có thể được nạp chồng trong C++:

Trang 6

& | ~ ! , =

Còn đây là danh sách các toán tử không thể được nạp chồng trong C++:

Dưới đây là các ví dụ đa dạng minh họa Nạp chồng toán tử trong C++, từ đó giúp bạn hiểu sâu hơn về khái niệm này Bạn click vào link để thấy ví dụ:

STT Toán tử và Ví dụ

1 Nạp chồng toán tử một ngôi (unary) trong C++

2 Nạp chồng toán tử nhị phân trong C++

3 Nạp chồng toán tử quan hệ trong C++

4 Nạp chồng toán tử Input/Output trong C++

Trang 7

5 Nạp chồng toán tử ++ và trong C++

6 Nạp chồng toán tử gán trong C++

7 Nạp chồng toán tử gọi hàm () trong C++

8 Nạp chồng toán tử [] trong C++

9 Nạp chồng toán tử truy cập thành viên lớp -> trong C++

Ngày đăng: 02/12/2017, 14:01

HÌNH ẢNH LIÊN QUAN

Bảng dưới liệt kê danh sách các toán tử có thể được nạp chồng trong C++: - Nạp chồng toán tử và Nạp chồng hàm trong C++ | 101 bài hướng dẫn C++ hay nhất PDF
Bảng d ưới liệt kê danh sách các toán tử có thể được nạp chồng trong C++: (Trang 5)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm