Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 2 của 2

Chủ đề: Copy Construstor

  1. #1
    Ngày tham gia
    Sep 2015
    Đang ở
    89 Tam Trinh - Hoàng Mai - Hà Nội
    Bài viết
    0

    Copy Construstor

    Cho mình hỏi bài ví dụ nhỏ dưới đây của mình đã đúng với 1 phương thức thiết lập tạo bản sao chưa?

    Mã:
    #include "iostream.h"
    #include "conio.h"
    
    class hinhchunhat
    {
    	int dai,rong;
    	public:
    	hinhchunhat();
    	hinhchunhat(hinhchunhat&);
    	void xuat();
    	void get();
    };
    void hinhchunhat::get()
    {
    	cout<<"nhap dai va rong";
    	cin>>dai>>rong;
    }
    void hinhchunhat::xuat()
    {
    	cout<<endl<<dai<<"x"<<rong;
    	cout<<endl<<this;
    }
    hinhchunhat::hinhchunhat()
    {get();}
    hinhchunhat::hinhchunhat(hinhchunhat& X)
    {
    	dai=X.dai;
    	rong=X.rong;
    }
    
    void main()
    {
    	clrscr();
    	hinhchunhat a;
    	a.xuat();
    	hinhchunhat b(a);
    	b.xuat();
    	getch();
    }
    Mình tạo đối tượng a trước, gán cho nó thông qua hàm khởi tạo mặc định >>>
    mình return con trỏ this để xem thì thhấy giá trị khác nhau.
    Vậy mình muốn hỏi là 2 đối tượng a và b này đã là 2 đối tượng biệt lập chưa? tức là khi sửa a hay b thì giá trị biến kia không thay đổi? (tại mình thấy trong sách có mấy vụ gì nói về con trỏ trỏ về 1 vùng nhớ, rồi thì hhàm hủy chạy 2 lần,tùm lum hết)

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn làm như vậy là ổn rồi, a và b là 2 đối tượng biệt lập bạn ạ.
    Nếu để cho thật chuẩn thì bạn nên khai báo hinhchunhat(const hinhchunhat& X); (hoặc hinhchunhat const& X) vì trong constructor này X không thay đổi. Thân

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •