<< Chapter < Page Chapter >> Page >

    float Side;

    cin>>Side;

    cout<<"The tich cua hinh lap phuong = "<<Cube(Side);

    return 0;

}

inline float Cube(float S)

{

   return S*S*S;

}

Các hàm đệ quy không được là hàm inline.

Các giá trị tham số mặc định

Một trong các đặc tính nổi bật nhất của C++ là khả năng định nghĩa các giá trị tham số mặc định cho các hàm. Bình thường khi gọi một hàm, chúng ta cần gởi một giá trị cho mỗi tham số đã được định nghĩa trong hàm đó, chẳng hạn chúng ta có đoạn chương trình sau:

void MyDelay(long Loops); //prototype

………………………………..

void MyDelay(long Loops)

{

for(int I = 0; I<Loops; ++I)

;

}

Mỗi khi hàm MyDelay() được gọi chúng ta phải gởi cho nó một giá trị cho tham số Loops. Tuy nhiên, trong nhiều trường hợp chúng ta có thể nhận thấy rằng chúng ta luôn luôn gọi hàm MyDelay() với cùng một giá trị Loops nào đó. Muốn vậy chúng ta sẽ dùng giá trị mặc định cho tham số Loops, giả sử chúng ta muốn giá trị mặc định cho tham số Loops là 1000. Khi đó đoạn mã trên được viết lại như sau :

void MyDelay(long Loops = 1000); //prototype

………………………………..

void MyDelay(long Loops)

{

for(int I = 0; I<Loops; ++I)

;

}

Mỗi khi gọi hàm MyDelay() mà không gởi một tham số tương ứng thì trình biên dịch sẽ tự động gán cho tham số Loops giá trị 1000.

MyDelay(); // Loops có giá trị là 1000

MyDelay(5000); // Loops có giá trị là 5000

Giá trị mặc định cho tham số có thể là một hằng, một hàm, một biến hay một biểu thức.

Ví dụ 2.11: Tính thể tích của hình hộp

1: #include<iostream.h>

2: int BoxVolume(int Length = 1, int Width = 1, int Height = 1);

3:

4: int main()

5: {

6:   cout<<"The tich hinh hop mac dinh: "

7:   <<BoxVolume()<<endl<<endl

8:   <<"The tich hinh hop voi chieu dai=10,do rong=1,chieu cao=1:"

9:   <<BoxVolume(10)<<endl<<endl

10:  <<"The tich hinh hop voi chieu dai=10,do rong=5,chieu cao=1:"

11:  <<BoxVolume(10, 5)<<endl<<endl

12:  <<"The tich hinh hop voi chieu dai=10,do rong=5,chieu cao=2:"

13:  <<BoxVolume(10, 5, 2)<<endl;

14:    return 0;

15: }

16: //Tính thể tích của hình hộp

17: int BoxVolume(int Length, int Width, int Height)

18: {

19:    return Length * Width * Height;

20: }

Chúng ta chạy ví dụ 2.11 , kết quả ở hình 2.13

Hình 2.13: Kết quả của ví dụ 2.11

Chú ý:

Các tham số có giá trị mặc định chỉ được cho trong prototype của hàm và không được lặp lại trong định nghĩa hàm (Vì trình biên dịch sẽ dùng các thông tin trong prototype chứ không phải trong định nghĩa hàm để tạo một lệnh gọi).

Một hàm có thể có nhiều tham số có giá trị mặc định. Các tham số có giá trị mặc định cần phải được nhóm lại vào các tham số cuối cùng (hoặc duy nhất) của một hàm. Khi gọi hàm có nhiều tham số có giá trị mặc định, chúng ta chỉ có thể bỏ bớt các tham số theo thứ tự từ phải sang trái và phải bỏ liên tiếp nhau, chẳng hạn chúng ta có đoạn chương trình như sau:

int MyFunc(int a= 1, int b , int c = 3, int d = 4); //prototype sai!!!

int MyFunc(int a, int b = 2 , int c = 3, int d = 4); //prototype đúng

………………………..

MyFunc(); // Lỗi do tham số a không có giá trị mặc định

MyFunc(1);// OK, các tham số b, c và d lấy giá trị mặc định

MyFunc(5, 7); // OK, các tham số c và d lấy giá trị mặc định

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Co nuoi. OpenStax CNX. Jul 29, 2009 Download for free at http://cnx.org/content/col10760/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Co nuoi' conversation and receive update notifications?

Ask