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

Đề tài: kế thừa đơn

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

    Mặc định kế thừa đơn

    Code:
    #include "stdafx.h"
    #include <iostream.h>
    #include <string.h>
    class nguoi
    {
    //	friend class sinhvien; //nếu thêm dòng này thì ở dưới hết lỗi
    	char *hoten;
    	int namsinh;
    public:
    	nguoi(char *ht,int ns):namsinh(ns){hoten=strdup(ht);}
    	~nguoi(){delete [] hoten;}
    	void xuat ()const;
    	friend ostream & operator <<(ostream &os,nguoi &p);
    };
    
    void nguoi::xuat()const 
    {
    	cout<<"nguoi,hoten:"<<hoten<<"namsinh"<<namsinh;
    }
    
    ostream & operator <<(ostream &os,nguoi &p)
    {
    	return 	os<<"hoten:"<<p.hoten<<"namsinh"<<p.namsinh;
    }
    
    
    
    class sinhvien : public nguoi
    {
    	char *maso;
    public:
    	sinhvien(char *ht,int ns,char *ms):nguoi(ht,ns)
    	{
    		maso=strdup(ms);
    	}
    	~sinhvien(){delete [] maso;}
    	void xuat();
    };
    
    
    void sinhvien::xuat()
    {
    	cout<<"sinhvien,maso:"<<maso<<"hoten"<<hoten;
    // báo lỗi ở đây:'hoten' : cannot access private member declared in class 'nguoi'//
    }
    void main()
    {
    	nguoi thai("vuongnhatthai",1990);
    	sinhvien a("Nguyen Van A",1990,"090909");
    	a.xuat();
    
    }
    Đoạn code trên có 1 lỗi và mình ko hiểu tại sao lỗi.Lớp sinhvien đã kế thừa lớp người rồi mà đáng lẽ phải truy xuất đc private của lớp người chứ!

  2. #2
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Không phải bao giờ kế thừa được thì có nghĩa là kế thừa tất cả đâu bạn
    Không biết ghi gì luôn ...

  3. #3
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Từ khóa protected ! Dùng friend truy xuất private chỉ dùng khi nào cần nested class thui !

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

    vậy bạn nào có thể giải thích vì sao ko?
    kế thừa trong đoạn code trên như thế nào.Ý mình nói về mặt tính chất của kế thừa ở trên ấy!mấy bạn giải thích xong mình vẫn chưa hiểu!!

  5. #5
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Với thừa kế public của bạn:
    Các thành viên public của lớp cơ sở trở thành các thành viên public của lớp dẫn xuất.
    Các thành viên protected của lớp cơ sở trở thành các thành viên protected của lớp dẫn xuất.
    Các thành viên private của lớp cơ sở sẽ không thể được truy cập bên trong lớp dẫn xuất.
    Thế này là bạn hiểu rồi chứ.
    Không biết ghi gì luôn ...

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

    Mặc định kế thừa đơn

    oki!!giải thích như vậy thì không hiểu mới lạ.thank bác nhé!!!em hiểu òi!!!phải chi pác giải thích sớm nhỉ???hi hi

  7. #7
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Trích dẫn Nguyên bản được gửi bởi demontaihack Xem bài viết
    oki!!giải thích như vậy thì không hiểu mới lạ.thank bác nhé!!!em hiểu òi!!!phải chi pác giải thích sớm nhỉ???hi hi
    Điều quan trọng là bạn chưa hiểu rõ về lý thuyết, thế thôi. Hihihi
    Không biết ghi gì luôn ...

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

    tại mình mới học thôi.Mong bạn đừng cười chê!!!

  9. #9
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Trích dẫn Nguyên bản được gửi bởi demontaihack Xem bài viết
    tại mình mới học thôi.Mong bạn đừng cười chê!!!
    hihi, không ai chê bạn đâu, mình nói thế chỉ là để bạn chú ý hơn lý thuyết thôi mà
    Không biết ghi gì luôn ...

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

    hì hì!thanks bạn!

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