1. Trang chủ
  2. » Công Nghệ Thông Tin

Hàm bạn, lớp bạn

4 301 1
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Friend function, friend class
Định dạng
Số trang 4
Dung lượng 20,99 KB

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

Nội dung

Hàm bạn xem mục §6, chương 3 của một lớp, tuy không phải là phương thức của lớp, nhưng có thể truy nhập đến các thành phần riêng private của lớp.. Một hàm có thể là bạn của nhiều lớp..

Trang 1

Hàm bạn, lớp bạn

13.1 Hàm bạn (xem mục §6, chương 3) của một lớp, tuy không

phải là phương thức của lớp, nhưng có thể truy nhập đến các thành

phần riêng (private) của lớp Một hàm có thể là bạn của nhiều lớp.

13.2 Nếu lớp A được khai báo là bạn của lớp B thỡ tất cả cỏc

phương thức của A đều có thể truy nhập đến các thành phần riêng

của lớp B Một lớp có thể là bạn của nhiều lớp khác Cũng có thể

khai báo A là bạn của B và B là bạn của A

13.3 Cách khai báo lớp bạn

Giả sử có 3 lớp A, B và C Để khai báo lớp này là bạn của lớp kia,

ta viết theo mẫu sau:

// Khai báo trước các lớp

class A;

class B ;

class C;

// Định nghĩa các lớp

class A

{

friend class B ; // Lớp B là bạn của A

friend class C ; // Lớp C là bạn của A

};

class B

{

friend class A ; // Lớp A là bạn của B friend class C ; // Lớp C là bạn của B

};

class C {

friend class B ; // Lớp B là bạn của C

};

13.4 Ví dụ

Chương trỡnh dưới đây có 2 lớp:

MT (ma trận vuông)

VT (véc tơ) Lớp MT là bạn của VT và lớp VT là bạn của MT Trong chương trỡnh sử dụng các phương thức trùng tên:

2 phương thức nhap():

nhập ma trận nhập véc tơ

2 phương thức in():

in ma trận

in véc tơ

4 phương thức tich():

tích ma trận với ma trận, kết quả là ma trận tích ma trận với véc tơ, kết quả là véc tơ tích véc tơ với ma trận, kết quả là véc tơ tích véc tơ với véc tơ, kết quả là số thực

Trang 2

Nội dung chương trỡnh là:

+ Nhập các ma trận A, B, C

+ Nhập các véc tơ

+ Tính tích D = AB

+ Tính tích u = Dy

+ Tính tích v = xC

+ Tính tích s = vu

//CT4_17.CPP

// Lop ban

// Lop MT , lop VT

#include <conio.h>

#include <iostream.h>

class MT;

class VT;

class MT

{

private:

double a[10][10];

int n;

public:

friend class VT;

MT()

{

n=0;

}

void nhap();

void in();

VT tich(const VT &y);

MT tich(const MT &b) ;

} ; class VT { private:

double x[10];

int n;

public:

friend class MT;

VT() { n=0;

} void nhap();

void in();

VT tich(const MT &b);

double tich(const VT &y) ; } ;

void MT::nhap() {

cout << "\n Cap ma tran: " ; cin >> n;

for (int i=1; i<=n; ++i) for (int j=1; j<=n; ++j) {

cout << "\nPhan tu hang " << i << " cot " << j << " = " ; cin >> a[i][j];

}

Trang 3

void MT::in()

{

for (int i=1; i<=n; ++i)

{

cout << "\n" ;

for (int j=1; j<=n; ++j)

cout << a[i][j] << " " ;

}

}

void VT::nhap()

{

cout << "\n Cap vec to: " ;

cin >> n;

for (int i=1; i<=n; ++i)

{

cout << "\nPhan tu thu " << i << " = " ;

cin >> x[i];

}

}

void VT::in()

{

for (int i=1; i<=n; ++i)

cout << x[i] << " " ;

}

VT MT::tich(const VT &y)

{

VT z;

int i,j;

for (i=1; i<=n; ++i) {

z.x[i] = 0.0 ; for (j=1; j<=n; ++j) z.x[i] += a[i][j]*y.x[j];

} z.n = n;

return z;

}

MT MT::tich(const MT &b) {

MT c;

int i,j,k;

for (i=1; i<=n; ++i) for (j=1; j<=n; ++j) {

c.a[i][j] = 0.0 ; for (k=1; k<=n; ++k) c.a[i][j] += a[i][k]*b.a[k][j];

} c.n = n;

return c;

}

VT VT::tich(const MT &b) {

VT z;

int i,j;

for (j=1; j<=n; ++j) {

Trang 4

z.x[j] = 0.0 ;

for (i=1; i<=n; ++i)

z.x[j] += b.a[i][j]*x[i];

}

z.n = n;

return z;

}

double VT::tich(const VT &y)

{

double tg=0.0;

for (int i=1; i<=n; ++i)

tg += x[i]*y.x[i];

return tg;

}

void main()

{

MT a,b,c;

VT x,y;

clrscr();

cout << "\nMa tran A";

a.nhap();

cout << "\nMa tran B";

b.nhap();

cout << "\nMa tran C";

c.nhap();

cout << "\nvec to X";

x.nhap();

cout << "\nvec to Y";

y.nhap();

MT d= a.tich(b);

VT u = d.tich(y);

VT v = x.tich(c);

double s = v.tich(u);

cout << "\n\nVec to v\n"; v.in();

cout << "\n\nMa tran D"; d.in();

cout << "\n\nVec to y\n"; y.in();

cout << "\n\nS= vDy = " << s; getch();

}

236

Ngày đăng: 25/10/2013, 04:20

TỪ KHÓA LIÊN QUAN

w