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

Đề tài: Inheritance

  1. #1
    Ngày gia nhập
    01 2013
    Bài viết
    1

    Mặc định Inheritance

    Mình có 3 file thế này.

    1. Circle.h
    Code:
    #include <iostream>
    #include "Point.h"
    
    class circle: public point
    {
    protected:
    	float radius;
    public:
    	circle(int, int, float); //circle has to have a point with (x,y) and the radius;
    	~circle()
    	{
    			cout<<"bye circle ";
    			//this one has to be in the program // important!!!!!
    	}
    	void setr(float);
    	float getr();
    	void print() 
    	{
    		point::print();
    		cout<<"radius="<<radius<<endl;
    		
    	}
    
    };
    2. Point.h
    Code:
    #include <iostream>
    using namespace std;
    
    class point
    {
    protected: // could keep it private, we can access it via the set/get function
    	int x;
    	int y;
    public:
    	point(); //useless in inheritance, we could not inherit constructor with no argument
    	point(int, int);
    	~point(){ cout<<"bye point ";}
    
    	void setall(int, int);
    	int getx();
    	int gety();
    	void print() {cout<< "("<<x<<","<<y<<")"<<endl;}
    };
    3. Main.cpp

    Code:
    #include <iostream>
    
    #include "Circle.h"
    using namespace std;
    
    void circle::setr( float a)
    {
    	radius = a;
    }
    
    float circle::getr()
    {
    	return radius;
    }
    
    circle::circle(int a, int b, float c) // first way of calling it
    {
    	point(a,b); //call previous function
    	radius=c;
    	if (c<0)
    		radius=1;
    	else radius=c;
    }
    
    void point::setall(int a, int b)
    {
    	x=a;
    	y=b;
    }
    
    int point::getx()
    {
    	return x;
    }
    
    int point::gety()
    {
    	return y;
    }
    
    
    point::point()
    {
    	x=0;
    	y=0;
    }
    
    point::point(int a, int b)
    {
    	x=a;
    	y=b;
    
    }
    
    
    
    
    void main() // static allocation
    {	circle c(5,2,15);
    	c.print();
    	point p(10,20);     // call point constructor // was called first
    	p.print();
    	
    	system("pause");
    }
    Nhưng lúc xuất kết quả thì circle c lại có (0,0) mà ko phải (5,2) như mình đã set. Radius vẫn ra đúng 15.

    Có ai chỉ mình với ạ.

  2. #2
    Ngày gia nhập
    04 2010
    Nơi ở
    Binh Thanh, Hồ Chí Minh, Vietnam, Vietnam
    Bài viết
    504

    C++ Code:
    1. circle::circle(int a, int b, float c) // first way of calling it
    2.     : point(a,b), radius(c) { //call previous function
    3.     if (radius < 0)
    4.         radius = 1;
    5. }
    Kết bạn với tôi <3
    Skype: giautm
    Facebook:
    https://fb.com/giautm.duongntt
    Email:
    giau.tmg@gmail.com

  3. #3
    Ngày gia nhập
    01 2013
    Bài viết
    1

    Trích dẫn Nguyên bản được gửi bởi doicanhden Xem bài viết
    C++ Code:
    1. circle::circle(int a, int b, float c) // first way of calling it
    2.     : point(a,b), radius(c) { //call previous function
    3.     if (radius < 0)
    4.         radius = 1;
    5. }
    Tại sao cách của mình lại không được vậy bạn? Mình làm theo cấu trúc của bà cô ghi mà nhỉ :-?

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

  1. Bài tập C++ Inheritance - virtual/pure virtual
    Gửi bởi jonathan_nguyen trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 09-02-2013, 10:53 AM
  2. Việc gộp thuộc tính abstraction với inheritance vào làm một trong C# có sai không?
    Gửi bởi khoaimon trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 13-02-2011, 02:47 PM

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