Tham số của hàm tạo

6 405 0
Tham số của hàm tạo

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

Thông tin tài liệu

Chương 2 Lớp , Đ ối tượng và tính đóng gói 32 32 1/ Khái niệm Hàm tạo có thể có các tham số, chỉ cần bổ sung các tham số thích hợp trong khai báo lớp và trong đònh nghóa hàm tạo. Khi khai báo một đối tượng, cần chỉ rõ các tham số này làm đối số. Ví dụ 3.1 Hàm tạo myclass(int x) có một tham số #include <iostream.h> class myclass { int a; public: myclass( int x ); // constructor void show(); }; myclass::myclass(int x) { cout << "In constructor\n"; a = x; } void myclass::show() { cout << a << "\n"; } int main() { myclass ob(4) ; ob.show(); return 0; } Giá trò 4 trong khai báo đối tượng ob(4), là đối số được truyền cho tham số x của hàm tạo myclass(int x), dùng để khởi tạo biến a. Cách viết khác (dài hơn) myclass ob = myclass (4) ; Chương 2 Lớp , Đ ối tượng và tính đóng gói 33 33 • Lưu ý hàm hủy không có tham số. Do không có cơ chế nào để truyền đối số cho một đối tượng bò hủy. Ví dụ 3.2 Có thể truyền nhiều tham số cho hàm tạo #include <iostream.h> class myclass { int a, b; public: myclass( int x, int y ); // constructor void show(); }; myclass::myclass(int x, int y) { cout << "In constructor\n"; a = x; b = y; } void myclass::show() { cout << a << ' ' << b << "\n"; } int main() { myclass ob( 4, 7 ); ob.show(); return 0; } Ví dụ 3.3 Dùng hàm tạo được tham số hóa để truyền "tên" cho stack. Chửụng 2 Lụựp , ẹ oỏi tửụùng vaứ tớnh ủoựng goựi 34 34 #include <iostream.h> #define SIZE 10 // Declare a stack class for characters. class stack { char stck[SIZE]; // holds the stack int tos; // index of top-of-stack char who; // identifies stack public: stack( char c ); // constructor void push(char ch); // push character on stack char pop(); // pop character from stack }; // Initialize the stack. stack::stack(char c) { tos = 0; who = c; cout << "Constructing stack " << who << "\n"; } // Push a character. void stack::push(char ch) { if(tos == SIZE) { cout << "Stack " << who << " is full\n"; return; } stck[tos] = ch; tos++; } // Pop a character. char stack::pop() { if(tos == 0) { Chương 2 Lớp , Đ ối tượng và tính đóng gói 35 35 cout << "Stack " << who << " is empty\n"; return 0; // return null on empty stack } tos--; return stck[tos]; } int main() { // Create two stacks that are automatically initialized. stack s1( 'A' ), s2( 'B' ); int i; s1.push('a'); s2.push('x'); s1.push('b'); s2.push('y'); s1.push('c'); s2.push('z'); // This will generate some error messages. for(i=0; i<5; i++) cout << "Pop s1: " << s1.pop() << "\n"; for(i=0; i<5; i++) cout << "Pop s2: " << s2.pop() << "\n"; return 0; } @ Mục đích : dùng để nhận ra tên stack nào được tham chiếu khi có lỗi xảy ra. Điều này rất có ích trong quá trình gỡ rối (debug). Ví dụ 3.4 Đối số của hàm tạo là một chuổi. #include <iostream.h> #include <string.h> #include <stdlib.h> #include <malloc.h> Chửụng 2 Lụựp , ẹ oỏi tửụùng vaứ tớnh ủoựng goựi 36 36 class strtype { char *p; int len; public: strtype( char *ptr ); ~strtype(); void show(); }; strtype::strtype(char *ptr) { len = strlen(ptr); p = (char *) malloc(len+1); if(!p) { cout << "Allocation error\n"; exit(1); } strcpy(p, ptr); } strtype::~strtype() { cout << "Freeing p\n"; free(p); } void strtype::show() { cout << p << " - length: " << len; cout << "\n"; } int main() { strtype s1( "This is a test." ) , s2( "I like C++." ) ; s1.show(); Chương 2 Lớp , Đ ối tượng và tính đóng gói 37 37 s2.show(); return 0; } Ví dụ 3.6 Có thể truyền cho hàm tạo của đối tượng một biểu thức hoặc các biến. #include <iostream.h> class myclass { int i, j; public: myclass( int a, int b ); void show(); }; myclass::myclass(int a, int b) { i = a; j = b; } void myclass::show() { cout << i << ' ' << j << "\n"; } int main() { int x, y; cout << "Enter two integers: "; cin >> x >> y; // use variables to construct ob myclass ob( x, y ); ob.show(); return 0;} . 32 32 1/ Khái niệm Hàm tạo có thể có các tham số, chỉ cần bổ sung các tham số thích hợp trong khai báo lớp và trong đònh nghóa hàm tạo. Khi khai báo một. Lưu ý hàm hủy không có tham số. Do không có cơ chế nào để truyền đối số cho một đối tượng bò hủy. Ví dụ 3.2 Có thể truyền nhiều tham số cho hàm tạo #include

Ngày đăng: 29/09/2013, 06:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan