📄 继承.txt
字号:
//**************************
//** ch16_1.cpp **
//**************************
#include <iostream.h>
#include <string.h>
class Advisor
{
int noOfMeeting;
};
class Student
{
public:
Student(char* pName="noName")
{
strncpy(name,pName,sizeof(name));
name[sizeof(name)-1]='\0';
average=semesterHours=0;
}
void addCourse(int hours,float grade)
{
average=(semesterHours*average+grade);
semesterHours+=hours;
average/=semesterHours;
}
int getHours() {return semesterHours;}
float getAverage() {return average;}
void display()
{
cout<<"name:"<<name<<" "
<<"hours:"<<semesterHours<<" "
<<"average:"<<average<<endl;
}
protected:
char name[40];
int semesterHours;
float average;
};
class GraduateStudent:public Student
{
public:
getQualifier() {return qualifierGrade;}
protected:
Advisor advisor;
int qualifierGrade;
};
void main()
{
Student ds("Lo lee undergrade");
GraduateStudent gs;
ds.addCourse(3,2.5);
ds.display();
gs.addCourse(3,3.0);
gs.display();
}
//**************************
//** ch16_2.cpp **
//**************************
#include <iostream.h>
class Base
{
public:
virtual void fn()
{
cout<<"In Base class."<<endl;
}
};
class SubClass: public Base
{
public:
virtual void fn()
{
cout<<"In SubClass."<<endl;
}
};
void test(Base &b)
{
b.fn();
}
void main()
{
Base bc;
SubClass sc;
cout<<"Calling test(bc)"<<endl;
test(bc);
cout<<"Calling test(sc)"<<endl;
test(sc);
}
//**************************
//** ch16_3.cpp **
//**************************
#include <iostream.h>
#include <math.h>
class Shape
{
public:
Shape(double x,double y): xCoord(x),yCoord(y) {}
virtual double Area() const{return 0.0;}
protected:
double xCoord,yCoord;
};
class Circle:public Shape
{
public:
Circle(double x,double y,double r):Shape(x,y),radius(r) {}
virtual double Area() const {return 3.14*radius*radius;}
protected:
double radius;
};
class Rectangle:public Shape
{
public:
Rectangle(double x1,double y1,double x2,double y2):Shape(x1,y1),x2Coord(x2),y2Coord(y2) {}
virtual double Area() const;
protected:
double x2Coord,y2Coord;
};
double Rectangle::Area() const
{
return fabs((xCoord-x2Coord)*(yCoord-y2Coord));
}
void fun(const Shape& sp)
{
cout<<sp.Area()<<endl;
}
void main()
{
Circle c(2.0,5.0,4.0);
fun(c);
Rectangle t(2.0,4.0,1.0,2.0);
fun(t);
}
//**************************
//** ch16_4.cpp **
//**************************
#include <iostream.h>
class Base
{
public:
virtual void fn(int x)
{
cout<<"In Base class, int x="<<x<<endl;
}
};
class SubClass:public Base
{
public:
virtual void fn(float x)
{
cout<<"In SubClass, float x="<<x<<endl;
}
};
void test(Base &b)
{
int i=1;
b.fn(i);
float f=2.0;
b.fn(f);
}
void main()
{
Base bc;
SubClass sc;
cout<<"Calling test(bc)"<<endl;
test(bc);
cout<<"Calling test(sc)"<<endl;
test(sc);
}
//**************************
//** ch16_5.cpp ** could't pass the compilation
//**************************
#include <iostream.h>
class Base
{
public:
virtual Base* afn()
{
cout<<"This is Base class."<<endl;
return this;
}
};
class SubClass:public Base
{
public:
virtual SubClass* afn()
{
cout<<"This is SubClass."<<endl;
return this;
}
};
void test(Base& x)
{
Base* b;
b=x.afn();
}
void main()
{
Base bc;
SubClass sc;
test(bc);
test(sc);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -