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

...C06. Operator Overloading.pdf

7 130 0

Đ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 181,76 KB

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

Nội dung

01/06/2006 N g ôn n gữ C # 2N ạp chồng tác tử operator overloading n L àm cho các class tự tạo userL àm cho các class tự tạo user--defined class có thể defined class có thể thự c hiện đư

Trang 1

N gôn ngữ C #

T rần V ăn T èo tvteo@agu.edu.vn

Trang 2

01/06/2006 N g ôn n gữ C # 2

N ạp chồng tác tử (operator overloading)

n L àm cho các class tự tạo (userL àm cho các class tự tạo (user defined class) có thể defined class) có thể

thự c hiện đư ợ c tất cả các chứ c năng của các kiểu dữ liệu bẩm sinh (built

liệu bẩm sinh (built in type).in type)

n X ây dự ng hàm :

Fraction theSum = = firstFraction Add (secondFraction)

n T ự nhiên và nhất quán vớ i kiểu dữ liệu bẩm sinh:

Fraction theSum = = firstFraction + secondFraction

Trang 3

S ử dụng từ khóa

S ử dụng từ khóa operator operator

n C ác tác tử là nhữ ng hàm C ác tác tử là nhữ ng hàm static static, có trị trả về là kết , có trị trả về là kết

quả của m ột tác vụ vớ i các thông số là các tác tố

V í dụ:

n C ú pháp: Đ ặt từ khóa operator trư ớ c tác tử cần

nạp chồng

V í dụ:

V í dụ: operator+ , operator>= , operator+=operator+ , operator>= , operator+=

Fraction theSum = = firstFraction + secondFraction

public static Fraction operator+ ( Fraction lhs, Fractino rhs )

Fraction theSum = Fraction operator +(firstFraction, secondFraction)

lhs  firstFraction rhs  secondFraction

Trang 4

01/06/2006 N g ôn n gữ C # 4

T ác tử quan hệ (R elational O perator)

n N ếu đã overload tác tử bằng (= = ) thì nên override

luôn hàm virtual E quals() của lớ p O bject

n C ho phép lớ p bạn m ang tính đa hình và tư ơ ng thích

vớ i các ngôn ngữ N E T khác không hổ trợ nạp

chồng tác tử

public override bool Equals( object obj) {

if ( ! (obj is Fraction) ) {

return false ; }

return this == (Fraction)obj;

}

Trang 5

T ác tử logic (L ogical operator)

n H ai tác tử H ai tác tử && && và |||| không thể overloading trự c tiếp

n P hải định nghĩa 4 tác tử : P hải định nghĩa 4 tác tử : & , & , || , true , false.

n H ai tác tử & & và |||| tự động tính như sau:

•• x && y   T.false(x) ? x : T.&(x,y) T.false(x) ? x : T.&(x,y)

•• x || y   T.true(x) ? x : T.|(x,y) T.true(x) ? x : T.|(x,y)

public static Fraction operator & (F ra ctio n a , F ra ctio n b){… … }

public static Fraction operator | (F ractio n a , F ra ction b){… … }

public static Fraction operator true (F ra ctio n a , F ractio n b ){… … }

public static Fraction operator false (F ractio n a , F raction b){… … }

public static Fraction operator ! (F ractio n a ){… … }

 K h ô n g cầ n :

public static Fraction operator && (Fraction a, Fraction b)

Trang 6

01/06/2006 N g ôn n gữ C # 6

C huyển đổi các tác tử

int myInt = 5;

long myLong = 7;

myLong = myInt ; //implicit

myInt = myLong ; ????  myInt = ( int )myLong ; //explicit

Đ ịn h n g h ĩa : public static Fraction operator + ( Fraction lhs , Fraction rhs ) Khai báo: Fraction a,b; int Sum;

T h ự c h iệ n : b = a + 3;

Sum = a + b;

public static implicit operator Fraction ( int th eIn t) {… }

public static explicit operator int ( Fraction frc) {… }

 b = a + 3; Sum = ( int )(a + b);

Trang 7

Q & A

Ngày đăng: 05/11/2017, 03:39