2012年11月6日

C++ 繼承小範例

Main裡:
#include <iostream>
#include "ADD.h"
#include "Multiplication.h"
using namespace std;

/*
 * 
 */
int main(int argc, char** argv) {
    ADD add(10,20);
    cout<<"10+20="<<add.getAdd()<<endl;
    add.c=10;
    add.d=10;
    cout<<"c="<< add.c<<endl;
    cout<<"d="<< add.d<<endl;
    add.numberChange(add.c,add.d);
    cout<<"改變後 c="<< add.c<<endl;
    cout<<"改變後 d="<< add.d<<endl;
    
    
    Multiplication m;
    cout<<"繼承並重寫相加方法10+10= "<<m.ADD(m.c,m.d)<<endl;
    cout<<"繼承並多寫相乘方法10*10= "<<m.Mult(m.c,m.d)<<endl;
    cout<<"c="<< m.c<<endl;
    cout<<"d="<< m.d<<endl;
    m.numberChange(m.c,m.d);
    cout<<"改變後 c="<< m.c<<endl;
    cout<<"改變後 d="<< m.d<<endl;
    
    return 0;
}
ADD.h:
#ifndef ADD_H
#define ADD_H
class ADD {
private:
    int a,b;
protected:
    int e,f;
public:
    int c,d;
    ADD();
    ADD(int x,int y);
   int getAdd();
   void numberChange(int &c,int &d);
};
#endif
ADD.cpp裡:
#include "ADD.h"

ADD::ADD()
{
    a=0;
    b=0;
    c=0;
    d=0;
    e=0;
    f=0;
}
ADD::ADD(int x,int y)
{
    a=x;
    b=y;
    
}
int ADD::getAdd()
{
 return    a+b;
}

void ADD::numberChange(int &c,int &d)
{
    c=100;
    d=200;
}
Multiplication.h裡:
#ifndef MULTIPLICATION_H
#define        MULTIPLICATION_H
#include "ADD.h"
class Multiplication:public ADD{
 public:
    Multiplication();
    int ADD(int x,int y);
    int Mult(int &x,int &y);
    
};


#endif
Multiplication.cpp裡:
#include "Multiplication.h"

Multiplication::Multiplication()
{
    c=10;
    d=10;
    e=50;
    f=100;
}

int Multiplication::ADD(int x, int y)
{
   return x+y; 
}

int Multiplication::Mult(int& x, int& y)
{
    return x*y;
}


Multiplication繼承了ADD這個物件,由例子所示,子物件並不是可以使用所有
父物件的成員,假如父物件成員是private,則子物件不管怎樣都無法繼承
而假如子物件是protected則父成員全部都為protected(private不可被繼承)
而假如子物件為public則父物件還是一樣不變(private不可被繼承)
而假如子物件為private則父物件全部為private(父成員為private不可被繼承)

沒有留言:

張貼留言