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

Class & Struct II Lập trình nâng cao

36 24 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 1,4 MB

Nội dung

Class & Struct II Lập trình nâng cao Nội dung Chủ yếu vấn đề cú pháp • 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 thành viên • Hàm bạn (friend) • Cài chồng tốn tử • Tách cài đặt hàm thành viên khỏi định nghĩa • Tách file h cpp public / private? struct Vector { private: double x; double y; x y thành viên khai báo private add() print() thành viên public public: Vector add(Vector other) { } void print() { } }; // hàm thành viên struct/class Vector v; v.x = 1.0; //Lỗi! x private v.print(); //Ok print() public … public / private? struct Vector { private: double x; double y; Thành viên private struct/class thành viên truy nhập bên định nghĩa cài đặt struct/class public: Vector add(Vector other) { } void print() { } }; Thành viên public struct/class thành viên mà truy nhập từ đâu phạm vi biến struct/class // hàm thành viên struct/class Vector v; v.x = 1.0; //Lỗi! x private v.print(); //Ok print() public … Thành viên struct mặc định public struct Vector { double x; double y; Vector add(Vector other) { } void print() { } x,y, add(), print() }; public mà khơng cần ngồi khai báo thơng thường // bên struct/class Vector v; v.x = 1.0; //truy nhập biến thành viên x v v.print(); //truy nhập hàm thành viên print() v … Class giống hệt struct ngoại trừ quyền truy nhập mặc định struct Vector { private: double x; double y; class Vector { private: double x; double y; public: Vector add(Vector other) { } void print() { } }; public: Vector add(Vector other) { } void print() { } }; hoàn toàn tương đương Class giống hệt struct ngoại trừ quyền truy nhập mặc định struct Vector { private: double x; double y; class Vector { // không cần khai báo private: double x; double y; Vector add(Vector other) { } void print() { } }; Vector add(Vector other) { } void print() { } }; hoàn toàn tương đương mặc định, thành viên class private Cách khai báo thông dụng cho class class Vector { double x; double y; public: Vector add(Vector other) { } void print() { } }; class Vector { public: Vector add(Vector other) { } void print() { } private: double x; double y; }; Tại cần struct lẫn class? • Có struct kế thừa struct C • Class thuật ngữ quen thuộc lập trình hướng đối tượng (C++ ngơn ngữ hướng đối tượng) • Tuy nhiên: cú pháp struct C struct C++ khác Không dùng struct C code C++ ngược lại! Class / struct • Khi nên dùng class, nên dùng struct? • Thơng lệ: – dùng struct cho cấu trúc không cần che private – dùng class cho cấu trúc lại Tuy nhiên, tùy chọn người • Class struct dùng để định nghĩa lớp đối tượng Mỗi biến thuộc lớp đối tượng • Từ ta gọi: Vector v; // v đối tượng (thuộc lớp) Vector Vector* p = new Vector(); // p trỏ tới đối tượng Vector Ví dụ: định nghĩa phép cộng Vector class Vector { double x; double y; Tên hàm phải operator+, operator-, operator*, … public: Vector operator+(const Vector& other) const { Vector sum(x + other.x, y + other.y); return sum; } Kết quả: với Vector v1, v2, v3, ta viết: Vector (double _x = 0, double _y = 0) Vector s = v1 + v2 + v3; : x(_x), y(_y) {} }; Câu hỏi class Vector { double x; double y; Return trỏ nhanh return đối tượng Vector Có nên giảm thời gian chép giá trị trả cách không? public: Vector* operator+(const Vector& other) const { return new Vector(x + other.x, y + other.y); } Liệu(double với Vector_x v1, v2, v3, double ta viết Vector = 0, _y =biểu 0)thức sau? : x(_x), y(_y) {} (v1 + v2 + v3) }; Con trỏ this đối tượng class Vector { double x; double y; • Bên hàm thành viên, từ khóa this cho ta trỏ tới đối tượng chạy hàm thành viên public: bool equals(const Vector& other) { if (this == &other) return true; return (x == other.x && y == other.y); } void print() const { cout

Ngày đăng: 12/08/2020, 21:49

TỪ KHÓA LIÊN QUAN

w