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

Bài giảng Lập trình nâng cao - Chương 8: Class and struct (tt)

36 9 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 36
Dung lượng 202,7 KB

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

Nội dung

Bài giảng Lập trình nâng cao - Chương 8: Class and struct cung cấp cho người học các kiến thức: Quyền truy nhập private/public cho biến hàm thành viên, class so với struct, khởi tạo hằng thành viên, hàm bạn (friend),... Mời các bạn cùng tham khảo nội dung chi tiết.

Trang 1

Lập trình nâng cao

Trang 4

bất cứ đâu trong phạm vi của biến struct/class

Trang 5

Thành viên của struct mặc định là public

Trang 6

Class giống hệt struct ngoại trừ quyền truy nhập mặc định

void print()

};

hoàn toàn tương đương

Trang 7

Class giống hệt struct ngoại trừ quyền truy nhập mặc định

void print()

};

hoàn toàn tương đương mặc định, thành viên class là private

Trang 9

•  Có struct là vì kế thừa struct của C

•  Class là thuật ngữ quen thuộc của lập trình

hướng đối tượng (C++ là ngôn ngữ hướng đối tượng)

•  Tuy nhiên: cú pháp của struct C và struct C++ khác nhau

Không được dùng struct C trong code C++

và ngược lại!

Trang 11

class Vector { double x;

double y;

public:

Vector add(Vector other) { }

Trang 12

Cực kì quan trọng: Tham chiếu other đảm bảo không bao giờ null

Trang 14

const int width; // hằng thành viên dữ liệu

const int height; // không thể thay đổi giá trị

Trang 16

Ta muốn truy cập x, y từ một hàm không phải thành viên của Vector

Phải làm sao?

Trang 17

xx = v1.getX() + v2.getX(); //ok

yy = v1.getY() + v2.getY(); //ok

}

Truy nhập biến thành viên qua se„er, ge„er

Các hàm không phải thành viên của Vector

sẽ dùng getX() và getY() để lấy giá trị

Kết quả: TẤT CẢ các hàm không phải thành viên của Vector đều được đọc giá trị của x, y

Trang 18

sẽ dùng getX() và getY() để lấy giá trị

Kết quả: TẤT CẢ các hàm không phải thành viên của Vector đều được đọc giá trị của x, y

Nếu muốn chỉ 1-2 hàm được đọc giá trị x,y thì làm thế nào?

Trang 19

đọc và ghi các thành viên private

Hàm không phải friend của Vector không được truy cập

Trang 20

•  Nếu có thể thay thế một hàm friend bằng một hàm thành viên thì nên làm

Trang 21

Định nghĩa lại toán tử operator overload

Trang 22

Vector s = v1 + v2 + v3;

Trang 23

Có nên giảm thời gian sao chép giá trị trả về bằng cách này không?

Liệu với Vector v1, v2, v3, ta có thể viết biểu thức sau?

(v1 + v2 + v3)

Trang 24

•  Bên trong hàm thành viên,

từ khóa this cho ta con trỏ tới đối tượng hiện đang

Trang 25

•  Bên trong hàm thành viên,

từ khóa this cho ta con trỏ tới đối tượng hiện đang

Trang 26

•  Bên trong hàm thành viên,

từ khóa this cho ta con trỏ tới đối tượng hiện đang

Trang 28

}

Trang 29

•  h„p://www.cplusplus.com/doc/tutorial/templates/

Trang 30

Vector Vector:: add(Vector& other) { }

void Vector:: print() { }

Trang 31

không đặt tại định nghĩa hàm

Trang 32

int main() { Vector a(1,2);

cout << &a << ": "; a.print();

Vector b(10,20);

File vector.h

File program.cpp

Trang 33

int main() { Vector a(1,2);

cout << &a << ": "; a.print();

Vector b(10,20);

File vector.h

File program.cpp

Lợi ích:

Có thể tái sử dụng cài đặt cấu trúc Vector trong nhiều dự án khác nhau

Chưa ổn:

Ai dùng vector.h có thể nhìn thấy toàn bộ cài đặt và có thể sửa mã nguồn

Trang 34

int main() { Vector a(1,2);

cout << &a << ": "; a.print();

Vector b(10,20);

vector.cpp) à Che được chi €ết cài đặt

Trang 36

•  Bài thực hành

Ngày đăng: 10/05/2021, 08:34

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm