面对对象程序设计
#include<iostream>
using namespace std;
class Clock{
public:
void setTime(int newh,int newm,int news)
{
hour=newh;
minute=newm;
second=news;
}
void showTime()
{
cout<<hour<<":"<<minute<<":"<<second<<endl;
}
private:
int hour;
int minute;
int second;
};
int main()
{
Clock myclock;
myclock.setTime(18,17,16);
myclock.showTime();
return 0;
}
2.
#include <iostream>
#include <string>
using namespace std;
class Document {
public:
Document(string nm);
void PrintNameOf(); // Print name.
private:
string name; // Document name.
};
Document::Document(string nm) {
name = nm;
};
void Document::PrintNameOf() {
cout << "Name of document:";
cout << name << endl;
}
class Book: public Document {
public:
Book(string nm, long pagecount);
void PrintNameOf();
private:
long pageCount;
};
Book::Book(string nm, long pagecount) :
Document(nm) {
pageCount = pagecount;
}
void Book::PrintNameOf() {
Document::PrintNameOf();
cout<<"(备注:book)"<<endl;
}
int main() {
Document a("Document1");
Book b("三国演义", 100);
a.PrintNameOf();
b.PrintNameOf();
return 0;
}
3.
#include <iostream>
using namespace std;
class Complex {//复数类定义
public://外部接口
Complex(double r = 0.0, double i = 0.0) : real(r), imag(i) { }//构造函数
friend Complex operator + (const Complex &c1, const Complex &c2);//运算符+重载
friend Complex operator - (const Complex &c1, const Complex &c2);//运算符-重载
friend ostream & operator << (ostream &out, const Complex &c); //运算符<<重载
private://私有数据成员
double real;//复数实部
double imag;//复数虚部
};
Complex operator + (const Complex &c1, const Complex &c2) {//重载运算符函数实现
return Complex(c1.real + c2.real, c1.imag + c2.imag);
}
Complex operator - (const Complex &c1, const Complex &c2) {//重载运算符函数实现
return Complex(c1.real - c2.real, c1.imag - c2.imag);
}
ostream & operator << (ostream &out, const Complex &c) {//重载运算符函数实现
out << "(" << c.real << ", " << c.imag << ")";
return out;
}
int main() {//主函数
Complex c1(5, 4), c2(2, 10), c3;//定义复数类的对象
cout << "c1 = " << c1 << endl;
cout << "c2 = " << c2 << endl;
c3 = c1 - c2;//使用重载运算符完成复数减法
cout << "c3 = c1 - c2 = " << c3 << endl;
c3 = c1 + c2;//使用重载运算符完成复数加法
cout << "c3 = c1 + c2 = " << c3 << endl;
return 0;
}
4.
#include<iostream>
using namespace std;
class Point
{
public:
Point(int newx,int newy)
{
x=newx;
y=newy;
}
Point(Point &p)
{
x=p.x;
y=p.y;
}
int getX(){return x;}
int getY(){return y;}
private:
int x,y;
};
class Ractangle
{
public:
Ractangle(Point a,Point b);
Ractangle(Ractangle &r);
float getArea(){return area;}
private:
Point a,b;
float area;
};
Ractangle::Ractangle(Point newa,Point newb):a(newa),b(newb)
{
double x,y;
x=static_cast<double>(a.getX()-b.getX());
y=(double)(a.getY()-b.getY());
area=(double)(x*y);
}
Ractangle::Ractangle(Ractangle &r):a(r.a),b(r.b)
{
area=r.area;
}
int main()
{
Point p1(1,2),p2(3,4);
Ractangle juxing1(p1,p2);
Ractangle juxing2(juxing1);
cout<<juxing1.getArea()<<endl;
cout<<juxing2.getArea()<<endl;
return 0;
}
5.
#include <iostream>
using namespace std;
class Complex {
public:
Complex(double r, double i)
{
real=r;
image=i;
}
Complex(double r)
{
real=r;
image=0;
}
void show();
void add(Complex c2);
private:
double real;
double image;
};
void Complex::add(Complex c2) {
real += c2.real;
image += c2.image;
}
void Complex::show() {
cout << real << "+";
cout << image << "i";
cout << endl;
}
int main() {
Complex c1(3, 5);
Complex c2 = 4.5;
c1.show();
c1.add(c2);
c1.show();
return 0;
}
6.
#include<iostream>
using namespace std;
class Clock{
public:
Clock(int h,int m,int s)
{
hour=h;minute=m;second=s;
}
Clock operator ++(){
second+=1;
if(second>=60)
{
second-=60;
minute+=1;
if(minute>=60)
{
minute-=60;
hour+=1;
if(hour==24)
hour=0;
}
}
return *this;
}
Clock operator++(int){
Clock old=*this;
++(*this);
return old;
}
void show(){
cout<<hour<<":"<<minute<<":"<<second<<endl;
}
private:
int hour,minute,second;
};
int main()
{
Clock first(23,59,59);
first.show();
(first++).show();
(++first).show();
return 0;
}
7.
#include<string>
#include<iostream>
using namespace std;
class Person
{
public:
Person(string nam, char s, int a)
{
name = nam;
sex = s;
age = a;
}
protected:
string name;
char sex;
int age;
};
class Teacher:virtual public Person
{
public:
Teacher(string nam, char s, int a, string t):Person(nam, s, a)
{
title = t;
}
protected:
string title;
};
class Student:virtual public Person
{
public:
Student(string nam, char s, int a, float sco):Person(nam, s, a), score(sco){}
protected:
float score;
};
class Graduate:public Teacher, public Student
{
public:
Graduate(string nam, char s, int a, string t, float sco, float w):
Person(nam, s, a), Teacher(nam, s, a, t),Student(nam, s, a, sco), wage(w) {}
void show()
{
cout << "name:" << name << endl;
cout << "sex:" << sex << endl;
cout << "age:" << age << endl;
cout << "title:" << title << endl;
cout << "score:" << score << endl;
cout << "wage:" << wage << endl;
}
private:
float wage;
};
int main(void)
{
Graduate grad1("Wang_li", 'f', 24, "assistant", 89.5, 2400);
grad1.show();
return 0;
}
8.
#include <iostream>
using namespace std;
class SimpleCircle
{
public:
SimpleCircle();
SimpleCircle(int);
SimpleCircle(const SimpleCircle &);
~SimpleCircle() {delete itsRadius;}
void setRadius(int);
int getRadius() const;
private:
int *itsRadius;
};
SimpleCircle::SimpleCircle()
{
itsRadius = new int(5);
}
SimpleCircle::SimpleCircle(int radius)
{
itsRadius = new int(radius);
}
SimpleCircle::SimpleCircle(const SimpleCircle & rhs)
{
int val = rhs.getRadius();
itsRadius = new int(val);
}
int SimpleCircle::getRadius() const
{
return *itsRadius;
}
int main()
{
SimpleCircle CircleOne, CircleTwo(9);
SimpleCircle CircleThree(CircleOne);
cout << "CircleOne:" << CircleOne.getRadius() << endl;
cout << "CircleTwo:" << CircleTwo.getRadius() << endl;
cout << "CircleThree:" << CircleThree.getRadius() << endl;
return 0;
}
9.
#include <iostream>
using namespace std;
class Tree {
int ages;
public:
Tree(int n=0);
~Tree();
void grow(int years);
void age();
};
Tree::Tree(int n) {
ages = n;
}
Tree::~Tree() {
age();
}
void Tree::grow(int years) {
ages += years;
}
void Tree::age() {
cout << "这棵树的年龄为" << ages << endl;
}
int main()
{
Tree t(12);
t.age();
t.grow(4);
return 0;
}
#include <iostream>
using namespace std;
class Object {
private:
int weight;
public:
Object() {
cout << "构造Object对象" << endl;
weight = 0;
}
~Object() {
cout << "析构Object对象" << endl;
}
};
class Box: public Object {
private:
int height, width;
public:
Box() {
cout << "构造Box对象" << endl;
height = width = 0;
}
~Box() {
cout << "析构Box对象" << endl;
}
};
int main() {
Box a;
return 0;
}
11.
#include <iostream>
using namespace std;
class Cat
{
public:
Cat(int newage)
{
age=newage;
numOfCats++;
}
~Cat()
{
numOfCats--;
}
static int getNumOfCats()
{
return numOfCats;
}
private:
int age;
static int numOfCats;
};
int Cat::numOfCats = 0;
void telepathicFunction()
{
cout << "There are " << Cat::getNumOfCats() << " cats alive!\n";
}
int main()
{
Cat a(2),b(3);
telepathicFunction();
return 0;
}
12.
#include <iostream>
using namespace std;
class Counter
{
public:
Counter();
Counter(int newValue);
~Counter(){}
int getValue(){ return value; }
Counter operator+ (Counter &);
private:
int value;
};
Counter::Counter(int initialValue):value(initialValue){}
Counter::Counter():value(0){}
Counter Counter::operator+ (Counter & rhs)
{
return Counter(value + rhs.value);
}
int main()
{
Counter varOne(2), varTwo(4), varThree;
varThree = varOne + varTwo;
cout << "varOne:" << varOne.getValue()<< endl;
cout << "varTwo:" << varTwo.getValue() << endl;
cout << "varThree:" << varThree.getValue() << endl;
return 0;
}
13.
#include <iostream>
using namespace std;
class Shape
{
public:
Shape(){}
~Shape(){}
float getArea() { return -1; }
};
class Circle : public Shape
{
public:
Circle(float radius):itsRadius(radius){}
~Circle(){}
float getArea() { return 3.14 * itsRadius * itsRadius; }
private:
float itsRadius;
};
class Rectangle :public Shape
{
public:
Rectangle(float len, float width): itsLength(len), itsWidth(width){};
~Rectangle(){};
float getArea() { return itsLength * itsWidth; }
private:
float itsWidth;
float itsLength;
};
class Square : public Rectangle
{
public:
Square(float len);
~Square(){}
};
Square::Square(float len):
Rectangle(len, len)
{
}
int main()
{ Shape s1;
cout << "The area of the Shape is " << s1.getArea () << endl;
Rectangle s2(4,6);
cout << "The area of the Rectangle is " << s2.getArea() << endl;
Square s3(5);
cout << "The area of the Square is " << s3.getArea() << endl;
return 0;
}
14.
#include <iostream>
#include <string>
using namespace std;
class Employee
{
private:
string name;
string street;
string city;
string zip;
public:
Employee(string newname, string str, string ct, string z);
void setName(string n);
void display();
};
Employee::Employee (string newname, string str, string ct, string z)
{
name=newname;
street=str;
city=ct;
zip=z;
}
void Employee::setName (string n)
{
name=n;
}
void Employee::display ()
{
cout << name << " "<<street << " ";
cout << city << " "<< zip;
}
int main()
{
Employee e1("张三","平安大街3号", "北京", "100000");
e1.display();
cout << endl;
e1.setName("李四");
e1.display();
cout << endl;
}
15.
#include <iostream>
using namespace std;
class Dog {
public:
Dog(int newAge = 0, int newWeight = 5);
~Dog();
int getAge() {
return age;
}
void setAge(int newAge) {
age = newAge;
}
int getWeight() {
return weight;
}
void setWeight(int newWeight) {
weight = newWeight;
}
private:
int age, weight;
};
Dog::Dog(int newAge, int newWeight) {
age = newAge;
weight = newWeight;
}
Dog::~Dog() //析构函数,不做任何工作
{
}
int main() {
Dog Jack(2, 10);
cout << "Jack is a Dog who is ";
cout << Jack.getAge() << " years old and " << Jack.getWeight() << " pounds weight." <<endl;
Jack.setAge(7);
Jack.setWeight(20);
cout << "Now Jack is ";
cout << Jack.getAge() << " years old and " << Jack.getWeight() << " pounds weight." <<endl;
return 0;
}
16.
#include <iostream>
#include<string>
using namespace std;
class Mammal {
public:
Mammal(int a,int w);
~Mammal();
private:
int itsAge;
int itsWeight;
};
class Dog: public Mammal {
public:
Dog(int a,int w,string color);
~Dog();
private:
string itsColor;
};
Mammal::Mammal(int a,int w) :
itsAge(a), itsWeight(w) {
cout << "Mammal constructor\n";
}
Mammal::~Mammal() {
cout << "Mammal destructor\n";
}
Dog::Dog(int a,int w,string color) :
Mammal(a,w),itsColor(color) {
cout << "Dog constructor\n";
}
Dog::~Dog() {
cout << "Dog destructor\n";
}
int main() {
Dog jack(5,25,"white");
return 0;
}
17.
#include <iostream>
using namespace std;
class Boat;
class Car {
private:
int weight;
public:
Car(int j) {
weight = j;
}
friend int getTotalWeight(Car &aCar, Boat &aBoat);
};
class Boat {
private:
int weight;
public:
Boat(int j) {
weight = j;
}
friend int getTotalWeight(Car &aCar, Boat &aBoat);
};
int getTotalWeight(Car &aCar, Boat &aBoat) {
return aCar.weight + aBoat.weight;
}
int main() {
Car c1(4);
Boat b1(5);
cout << getTotalWeight(c1, b1) << endl;
return 0;
}
18.
#include<iostream>
using namespace std;
class Shape
{
public:
virtual double getArea()=0;
};
class Circle:public Shape
{public:
Circle(double nr){r=nr;}
double getArea();
private:
double r;
};
class Rectangle:public Shape
{public:
Rectangle(double nlen,double nwidth){len=nlen;width=nwidth;}
double getArea();
private:
double len,width;
};
double Circle::getArea(){return 3.14*r*r;}
double Rectangle::getArea(){return len*width;}
int main()
{
Circle c(5);
Rectangle r(3.4,4.5);
Shape *pc=&c;;
Shape *pr=&r;
cout<<pc->getArea()<<endl;
cout<<pr->getArea()<<endl;
return 0;
}
19.
#include<iostream>
using namespace std;
class BaseClass{
public:
void fn1(){cout<<"BaseClass::fn1"<<endl;}
void fn2(){cout<<"BaseClass::fn2"<<endl;}
//virtual void fn1(){cout<<"BaseClass::fn1"<<endl;}
//virtual void fn2(){cout<<"BaseClass::fn2"<<endl;}
};
class DerivedClass : public BaseClass
{
public:
void fn1(){cout<<"DerivedClass::fn1"<<endl;}
void fn2(){cout<<"DerivedClass::fn2"<<endl;}
};
int main()
{
DerivedClass derivedclass;
derivedclass.fn1();
derivedclass.fn2();
DerivedClass *d=&derivedclass;
d->fn1();
d->fn2();
BaseClass *b=&derivedclass;
b->fn1();
b->fn2();
return 0;
}
20.
#include <iostream>
#include <fstream>
using namespace std;
class Dog {
public:Dog(int weight, long days) :itsWeight(weight), itsNumberDaysAlive(days) {}
~Dog() {}
int getWeight() {return itsWeight;}
long getDaysAlive() {return itsNumberDaysAlive;}
private:
int itsWeight;
long itsNumberDaysAlive;
};
int main()
{ char fileName[80];
cin >> fileName;
ofstream fout(fileName);
Dog dog1(5, 10);
fout.write((char*) &dog1, sizeof dog1);
fout.close();
ifstream fin(fileName);
Dog dog2(2, 2);
// cout << "dog2 weight: " << dog2.getWeight() << endl;
// cout << "dog2 days: " << dog2.getDaysAlive() << endl;
fin.read((char*) &dog2, sizeof dog2);
cout << "dog2 weight:" << dog2.getWeight() << endl;
cout << "dog2 days:" << dog2.getDaysAlive() << endl;
fin.close();
return 0;
}
21.
#include <iostream>
#include<string>
using namespace std;
template <class T1,class T2>
class com{
public:
com(T1 newx,T2 newy){x=newx;y=newy;}
void print(){cout<<x<<" "<<y<<endl;}
private:
T1 x;
T2 y;
};
int main()
{
int age;
double score;
double wage;
string title;
cin>>age>>score>>wage>>title;
com<int,double> student(age,score);
com<double,string> teacher(wage,title);
student.print();
teacher.print();
return 0;
}
22.
#include <iostream>
using namespace std;
template <typename T1,typename T2>
void m(T1 a,T2 b){
if(a>=b) cout<<a<<endl;
else cout<<b<<endl;
}
int main()
{
int a=1;
float b=2.3;
double c=4.5;
m(a,b);
m(a,c);
m(b,c);
return 0;
}