面對對象程序設計
#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 {//復數(shù)類定義
public://外部接口
Complex(double r = 0.0, double i = 0.0) : real(r), imag(i) { }//構造函數(shù)
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://私有數(shù)據(jù)成員
double real;//復數(shù)實部
double imag;//復數(shù)虛部
};
Complex operator + (const Complex &c1, const Complex &c2) {//重載運算符函數(shù)實現(xiàn)
return Complex(c1.real + c2.real, c1.imag + c2.imag);
}
Complex operator - (const Complex &c1, const Complex &c2) {//重載運算符函數(shù)實現(xiàn)
return Complex(c1.real - c2.real, c1.imag - c2.imag);
}
ostream & operator << (ostream &out, const Complex &c) {//重載運算符函數(shù)實現(xiàn)
out << "(" << c.real << ", " << c.imag << ")";
return out;
}
int main() {//主函數(shù)
Complex c1(5, 4), c2(2, 10), c3;//定義復數(shù)類的對象
cout << "c1 = " << c1 << endl;
cout << "c2 = " << c2 << endl;
c3 = c1 - c2;//使用重載運算符完成復數(shù)減法
cout << "c3 = c1 - c2 = " << c3 << endl;
c3 = c1 + c2;//使用重載運算符完成復數(shù)加法
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() //析構函數(shù),不做任何工作
{
}
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;
}