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

Một phần của tài liệu Tài liệu lập trình C++ tiếng Việt (Trang 109)

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

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

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à ký hiệu của toán tử đang được định nghĩa. Giống như bất kỳ hàm khác, một toán tử nạp chồng có một kiểu trả về và một danh sách tham số.

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 ) {

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 110 }

void setBreadth( double bre ) {

breadth = bre; }

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

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 111 // box 1 specification Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0); // box 2 specification Box2.setLength(12.0); 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 0; }

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

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 112

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

Một phần của tài liệu Tài liệu lập trình C++ tiếng Việt (Trang 109)

Tải bản đầy đủ (PDF)

(200 trang)