Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Tài liệu Module 6 A Closer Look at Functions doc
MIỄN PHÍ
Số trang
33
Kích thước
923.7 KB
Định dạng
PDF
Lượt xem
1891

Tài liệu Module 6 A Closer Look at Functions doc

Nội dung xem thử

Mô tả chi tiết

1

C++ A Beginner’s Guide by Herbert Schildt

Module6

A Closer Look at Functions

Table of Contents

CRITICAL SKILL 6.1: Know the two approaches to argument passing...........................................................2

CRITICAL SKILL 6.2: How C++ Passes Arguments ..........................................................................................2

CRITICAL SKILL 6.3: Using a Pointer to Create a Call-by-Reference ..............................................................3

CRITICAL SKILL 6.4: Reference Parameters...................................................................................................4

CRITICAL SKILL 6.5: Returning References....................................................................................................9

CRITICAL SKILL 6.6: Independent References.............................................................................................12

CRITICAL SKILL 6.7: Function Overloading ..................................................................................................13

CRITICAL SKILL 6.8:Default Function Arguments........................................................................................26

CRITICAL SKILL 6.9: Function Overloading and Ambiguity..........................................................................29

This module continues our examination of the function. It discusses three of C++’s most important

function-related topics: references, function overloading, and default arguments. These features vastly

expand the capabilities of a function. A reference is an implicit pointer. Function overloading is the

quality that allows one function to be implemented two or more different ways, each performing a

separate task. Function overloading is one way that C++ supports polymorphism. Using a default

argument, it is possible to specify a value for a parameter that will be automatically used when no

corresponding argument is specified. We will begin with an explanation of the two ways that arguments

can be passed to functions, and the implications of both methods. An understanding of argument

passing is needed in order to understand the reference.

2

C++ A Beginner’s Guide by Herbert Schildt

CRITICAL SKILL 6.1: Know the two approaches to argument

passing

In general, there are two ways that a computer language can pass an argument to a subroutine. The first

is call-by-value. This method copies the value of an argument into the parameter of the subroutine.

Therefore, changes made to the parameter of the subroutine have no effect on the argument used to

call it.

Call-by-reference is the second way a subroutine can be passed arguments. In this method, the address

of an argument (not its value) is copied into the parameter. Inside the subroutine, this address is used to

access the actual argument specified in the call. This means that changes made to the parameter will

affect the argument used to call the subroutine.

CRITICAL SKILL 6.2: How C++ Passes Arguments

By default, C++ uses call-by-value for passing arguments. This means that the code inside a function

cannot alter the arguments used to call the function. In this book, all of the programs up to this point

have used the call-by-value method. For example, consider the reciprocal( ) function in this program:

takes place inside reciprocal( ), the only thing modified is the local variable x. The variable t used as an

argument will still have the value 10 and is unaffected by the operations inside the function.

3

C++ A Beginner’s Guide by Herbert Schildt

CRITICAL SKILL 6.3: Using a Pointer to Create a

Call-by-Reference

Even though C++’s default parameter-passing convention is call-by-value, it is possible to manually

create a call-by-reference by passing the address of an argument (that is, a pointer) to a function. It is

then possible to change the value of the argument outside of the function. You saw an example of this in

the preceding module when the passing of pointers was discussed. As you know, pointers are passed to

functions just like any other values. Of course, it is necessary to declare the parameters as pointer types.

To see how passing a pointer allows you to manually create a call-by-reference, consider a function

called swap( ) that exchanges the values of the two variables pointed to by its arguments. Here is one

way to implement it:

The swap( ) function declares two pointer parameters, x and y. It uses these parameters to exchange the

values of the variables pointed to by the arguments passed to the function. Remember, *x and *y refer

to the variables pointed to by x and y. Thus, the statement

*x = *y;

puts the value of the object pointed to by y into the object pointed to by x. Consequently, when the

function terminates, the contents of the variables used to call the function will be swapped.

Since swap( ) expects to receive two pointers, you must remember to call swap( ) with the addresses of

the variables you want to exchange. The correct method is shown in this program:

Tải ngay đi em, còn do dự, trời tối mất!