Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Return * this là gì?

  1. #1
    Ngày gia nhập
    07 2011
    Bài viết
    10

    Red face Return * this là gì?

    Các pro cho mình hỏi câu lệnh return * this nghĩa là gì vậy?
    Đây là ví dụ:
    Code:
    #include<iostream.h>
    #include<string.h>
    #include<stdio.h>
    class string
    {
    	private:
    	 // char nd[20];
    	public:
    		char nd[30];
    		void nhap();
    
    		void hienthi();
    
    		string operator +(string);
    		string operator=(string);
    };
    void string :: nhap()
    {
    
    	cout<<"Noi dung : ";
    	gets(nd);
    
    }
    void string:: hienthi()
    {
    	cout<<nd<<endl;
    }
    string string:: operator +(string a)
    {
    	strcat(nd,a.nd);
    	return *this;
    }
    
    string string::operator =(string a)
    {
    	strcpy(nd,a.nd);
    	return *this;
    }
    
    
    
    void main()
    {
    	string a,b,c,d;
    	a.nhap();
    	a.hienthi();
    	b.nhap();
    	b.hienthi();
    	c=a+b;
    	c.hienthi();
    	d=a;
    	d.hienthi();
    
    
    }

  2. #2
    Ngày gia nhập
    08 2011
    Nơi ở
    /pentest
    Bài viết
    44

    this là con trỏ ngầm định hàm string string:: operator +(string a) có kiểu là string đó là một kiểu mà không phải là con trỏ nên ta phải nên để lưu sự thay đổi của phép + hai chuỗi, sự thay đổi của chuỗi ( đối tượng gọi nó) sẽ được ghi nhận.

    ví dụ:
    C Code:
    1.   string A, B;
    2.   // nhập chuỗi A g/s là chuỗi "abc"
    3.   // nhập chuỗi B g/s là chuôi "efg"
    4.   // thì khi này nếu gọi hàm + như sau
    5.   string C; C = A+B; //
    6.   // tưong đuơng C = A.operator+(B) và giá trị của C là "abcdefg" của A là "abcdefg"

  3. #3
    Ngày gia nhập
    03 2008
    Bài viết
    71

    trả lại con trỏ chứa địa chỉ đến đối tượng chứa phương thức đang thực hiện.

  4. #4
    Ngày gia nhập
    07 2011
    Bài viết
    160

    Trích dẫn Nguyên bản được gửi bởi namdh Xem bài viết
    trả lại con trỏ chứa địa chỉ đến đối tượng chứa phương thức đang thực hiện.
    this là con trỏ đến đối tượng đang xử lý. *this không phải là con trỏ mà là tham chiếu đến đối tượng đang xử lý (đối tượng có hàm đang được thực hiện)

    Vậy *this là tham chiếu đến đối tượng đang được xử lý. Còn return *this trả về cái gì thì tuỳ vào hàm đó trả về cái gì. Ví dụ hàm là int A::func() thì khi return *this, đối tượng kiểu A sẽ được convert về int rồi trả về. (Lớp A phải hỗ trợ việc convert này)
    Đã được chỉnh sửa lần cuối bởi fbchicken : 29-09-2011 lúc 04:08 PM.

  5. #5
    Ngày gia nhập
    07 2011
    Bài viết
    10

    Thanks các pro , mình đã hiểu rồi

Các đề tài tương tự

  1. hàm bắt buộc nhập số, nếu là số thì return 1, còn ký tự thì return 0;
    Gửi bởi khacphuctran trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 11-03-2011, 04:39 PM
  2. Khi nào cần return 0, return 1 trong int main()
    Gửi bởi jojocolumbus trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 22-06-2010, 10:23 AM
  3. hỏi về return
    Gửi bởi tung_ct trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 06-10-2009, 04:13 PM
  4. Điểm khác biệt giữa get và return
    Gửi bởi EnnerIT trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 10
    Bài viết cuối: 17-04-2009, 08:18 PM
  5. cách sử dụng lệnh return?????
    Gửi bởi kiensctn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 20
    Bài viết cuối: 23-03-2009, 11:06 PM

Tags của đề tài này

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn