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

58 48 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 58
Dung lượng 267,65 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: Kiểu dữ liệu có cấu trúc, struct và các biến thành viên, hàm thành viên, constructor và destructor. 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 2

–  Circle: Hình tròn trong hình học: toạ độ tâm (x,y) và bán kính, các phép toán \nh diện \nh, \nh chu vi, vẽ,

–  Student: Sinh viên trong ứng dụng quản lý đào tạo: tên,

mã sinh viên, lớp, địa chỉ, ngày sinh

Trang 4

double& x_sum, double& y_sum) { x_sum = x1 + x2; y_sum = y1 + y2;

Cần 4 tham số cho 2 vector toán hạng

Đọc code khó mà hiểu đây là các vector Quá nhiều tham số!

Trang 5

dễ hiểu đây là các vector

Trang 7

STRUCT VÀ CÁC BIẾN THÀNH VIÊN

Trang 8

struct Vector { định nghĩa kiểu Vector gồm : double x; -trường dữ liệu x

double y; -trường dữ liệu y

};

Vector v1, v2; biến v1, v2 thuộc kiểu Vector

Mỗi biến thuộc kiểu Vector có hai thành viên dữ liệu là x kiểu double và y kiểu double

Trang 9

struct Vector { định nghĩa kiểu Vector gồm : double x; -trường dữ liệu x

Trang 10

struct Person { định nghĩa kiểu dữ liệu Person gồm:

string name; -trường dữ liệu name

string address; -trường dữ liệu address int age; - trường dữ liệu age

Trang 12

Gọi constructor Point() để khởi tạo a,

b, c

Trang 13

Gọi ngầm constructor mặc định Point() để khởi tạo a, b, c

Trang 14

constructor mặc định Point() để khởi tạo a,b,c

Hoặc a[0], a[1], a[2]

Trang 15

•  Truyền bằng giá trị - pass by value

void print(Vector v) {

cout << "(" << v.x << "," << v.y << ")"; }

•  Truyền bằng tham chiếu - pass by reference

void print(Vector& v) {

cout << "(" << v.x << "," << v.y << ")"; }

Trang 16

•  Truyền bằng con trỏ - pass by pointer

void print(Vector* pv) {

cout << "(" << pv->x << "," << pv->y << ")"; }

Chú ý, khi truy nhập các trường từ con trỏ, phải

dùng toán tử mũi tên (->) thay vì dấu chấm (.)

Trang 21

s = s1;

‘a’

10 0x18a4

‘a’

10 0x18a4

s1

s

Trang 22

s = s1;

‘a’

10 0x18a4

‘a’

10 0x18a4

Trang 23

•  Khi muốn truyền struct vào hàm ở dạng chỉ

đọc, nên truyền hằng tham chiếu thay vì tham trị

Trang 24

HÀM THÀNH VIÊN

Trang 26

và y

Trang 31

add() đảm bảo không sửa giá trị của biến struct mà nó là thành viên

Trang 32

const Vector v; Vector v2;

v.print(); // ok vì print là hằng hàm thành

Trang 33

CONSTRUCTOR VÀ DESTRUCTOR

Trang 34

•  Tốn nhiều dòng khởi tạo giá trị cho các biến thành viên? Thế này có hay hơn không?

s.id = “15123456”;

Vector v1(1.0, 2.1);

Vector v2(1.3, 2.2);

Student s(“1512345”, “John”, “Smith”, “cs”);

Trang 35

•  Là hàm thành viên đặc biệt có nhiệm vụ khởi tạo các biến thành viên

Trang 37

… 0x400e 0x4012 0x4016

Trang 38

… 0x400e 0x4012 0x4016

Trang 39

0x400e

0x4012 0x4016

Trang 40

… 0x400e 0x4012 0x4016

Trang 41

… 0x400e 0x4012 0x4016

p: ??

Trang 42

… 0x400e 0x4012

p: ??

Trang 43

0x1000 0x1004

p: 0x400e

Trang 44

0x1000 0x1004

… 0x400e 0x4012

Trang 45

}; Array a1(10, 5); // gọi Array (int _n, int default_value)

Array a2(10); // gọi Array (int _n)

Array a3; // gọi hàm Array ()

Trang 50

n: 2 arr: 0x401e

0x1000 0x1004

Trang 51

0x1000 0x1004

… 0x400e 0x4012

Trang 54

Dùng destructor

n: 2 arr: 0x401e

0x1000 0x1004

Trang 55

Dùng destructor

… 0x400e 0x4012

Trang 56

Dùng destructor

Trang 57

0x1000 0x1004

… 0x400e 0x4012

Trang 58

String(const char* _s) { length = strlen(_s);

arr = new char[length]; strncpy(arr, s, length);

} ~String() { delete [] arr;

} void print() { cout << arr;

Ngày đăng: 15/05/2020, 22:57

TỪ KHÓA LIÊN QUAN

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