C++之面向对象实例

版权声明: https://blog.csdn.net/llxybm/article/details/82377499

目录

 

面向对象实例

计算一个日期所处当年年份的第几天

代码实现

学生信息录入                                                                                             

代码实现              

类的组合及构造函数

类中构造函数的实现及其使用

简单的类的定义及其使用

组合类的构成及其使用

友元函数及静态成元数据及函数的应用

不同形式构造函数的应用

友元函数的应用

构造函数,析构函数及静态数据成员的综合应用


面向对象实例

问题一:#include<iostream>

using namespace std;

class Vis//定义一个类Vis

{

public://定义类的成员函数

Vis (double x,double y,double z);//构造函数

double  vv();

private://定义类的数据成员

double a,b,c;

};

Vis::Vis(double x,double y,double z)//调用类的构造函数

{

       a=x;

   b=y;

   c=z;

}

  double Vis::vv()//调用类的成员函数

{

  return a*b*c;

  }

int main()//main函数

{

double a,b,c;

cin>>a>>b>>c;//向类中输入值

Vis m(a,b,c);//调用其中的成员函数

cout<<m.vv()<<endl;

return 0;

}

计算一个日期所处当年年份的第几天

代码实现

#include<iostream>

using namespace std;

class Date

{

public:

Date(int x, int y ,int z);//构造函数

int add();

void show();

private://定义类中的变量

int a,b,c;

};

Date::Date(int x, int y, int z)调用Date函数

{  

a=x;

b=y;

c=z;

}

int Date::add()调用函数

{

return c=c+1;

}

void Date::show()//调用类中的show函数

{

cout<<a<<"年"<<b<<"月"<<c<<"日"<<endl;

}

int main()//main主函数

{

int a,b,c;

cin>>a>>b>>c;

Date t(a,b,c);

    if(b==1||b==3||b==5||b==7||b==8||b==10||b==12)

{

if(c<31)

t.add();

}

    if(b==4||b==6||b==9||b==11)

{

if(c<30)

t.add();

}

if(a%4==0&&a%100!=0||a%400==0)

{

if(b==2&&c<29)

    t.add();

}

else if(b==2&&c<28)

    t.add();

    t.show();

return 0;

}                                                                                                                          

学生信息录入                                                                                             

代码实现              

 #include<iostream>

using namespace std;

class Stu

{

public:

~Stu();//析构函数

Stu(char Name[10],char Num[10],int Old);

void show();

private:

char name[10];

char num[10];

int old;

};

Stu::Stu(char Name[10],char Num[10],int Old)

{   

strcpy(name,Name);

strcpy(num,Num);

old=Old;

}//完成对一个学生信息的输入

Stu::~Stu()//完成对析构函数的调用

{

cout<<endl;

}

void Stu::show()

{

cout<<name<<' '<<num<<' '<<old<<endl;

}

int main()

{

char name[10],num[10];

int old;

    cin>>name>>num>>old;

Stu t(name, num, old);

t.show();

return 0;

}

类的组合及构造函数

类中构造函数的实现及其使用

#include<iostream>

using namespace std;

class Point

{

public:

Point(int xx=0,int yy=0)

{

x=xx;

    y=yy;

}

Point(Point&p);

int getx()

{

return x;

}

int gety()

{

return y;

}

private:

int x,y;

};

Point::Point(Point&p)//成员函数的实现

{

x=p.x;

y=p.y;

}

void fun1(Point p)//形参为Point类对象的函数

{

cout<<p.getx()<<endl;

}

//返回值为Point类对象的函数

Point fun2()

{

Point a(1,2);

return a;

}

int main()

{

Point a(4,5);//引用第一个对象a

Point b=a;//情况一:用a初始化b第一次调用复制构造函数

cout<<b.getx()<<endl;

fun1(b);//情况二:对象b作为fun1的实参第二次调用复制构造函数

b=fun2();//情况三:函数的返回值是类的对象函数返回时调用复制构造函数

cout<<b.getx()<<endl;

   return 0;

}

简单的类的定义及其使用

#include<iostream>

using namespace std;

const float  PI=3.141593;

const float FENCE_PRICE=35;

const float CONCRETE_PRICE=20;

class Circle

{

public:

Circle(float r);

    float c();

float area();

private:

float radius;

};

Circle::Circle(float r)

{

radius=r;

}

float Circle::c()

{

return 2*PI*radius;

}

float Circle::area()

{

return PI*radius*radius;

}

int main()

{

float radius;

cin>>radius;

Circle pool(radius);

Circle poolRim(radius+3);

float fenceCost=poolRim.c()*FENCE_PRICE;

cout<<"Fencing  Cost  is $"<<fenceCost<<endl;

float concreteCost=(poolRim.area()-pool.area())*CONCRETE_PRICE;

cout<<"Concrete Cost is $"<<concreteCost<<endl;

return 0;

}

组合类的构成及其使用

#include<iostream>

#include<cmath>

using namespace std;

class Point//Point类的定义

{

public:

Point(int xx=0,int yy=0)

{

x=xx;

y=yy;

}

Point (Point&p);

int getx(){return x;}

int gety(){return y;}

private:

int x,y;

};

Point::Point(Point&p)//复制构造函数的实现

{

x=p.x;

y=p.y;

}

//类的组合

class Line//Line类的定义

{

public://外部接口

Line (Point xp1,Point xp2);

Line (Line&l);

double getLen()

{

return len;

}

private:

Point p1,p2;

double len;

};

//组合类的构造函数

Line::Line(Point xp1,Point xp2):p1(xp1),p2(xp2)

{

double x=static_cast<double>(p1.getx()-p2.getx());

double y=static_cast<double>(p1.gety()-p2.gety());

len=sqrt(x*x+y*y);

}

//组合类的复制构造函数

Line::Line(Line&l):p1(l.p1),p2(l.p2)

{

len=l.len;

}

int main()

{

Point myp1(1,1),myp2(4,5);

Line line(myp1,myp2);

Line line2(line);//利用复制构造函数建立一个新对象

cout<<line.getLen()<<endl;

cout<<line2.getLen()<<endl;

return 0;}

友元函数及静态成元数据及函数的应用

不同形式构造函数的应用

#include<iostream>

using namespace std;

class Cdateinfo

{

public:

    Cdateinfo ()//不含形参的构造函数

{

year=2000;

month=1;

day=1;

}

    Cdateinfo(int Year,int Month,int Day);//含形参的构造函数

void settime(int newyear,int newmonth,int newday);

void showtime();

private:

int year,month,day;

};

Cdateinfo::Cdateinfo(int Year,int Month,int Day)

{

year=Year;

month=Month;

day=Day;

}

void Cdateinfo::settime(int newyear,int newmonth,int newday)

{

year=newyear;

month=newmonth;

day=newday;

}

void Cdateinfo::showtime()

{

cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;

}

int main()

{

Cdateinfo c1;//调用不含形参的构造函数

c1.showtime();

    Cdateinfo c2(2017,4,12);//调用含形式参数的构造函数

c2.showtime();

   Cdateinfo  c3;//调用含形参的构造函数

   c3.settime(2020,6,24);

   c3.showtime();

return 0;

}

友元函数的应用

#include<iostream>

#include<cmath>

using namespace std;

class Point

{

public:

Point (int x=0,int y=0):x(x),y(y){};

   int getX()

   {

   return x;

   }

   int getY()

   {

   return y;

   }

   friend float dist(Point &p1,Point &p2);//友元函数的声明

private:

int x,y;

};

float dist(Point &p1,Point &p2)//友元函数的调用

{

double x=p1.x -p2.x ;

double y=p1.y -p2.y ;

return float(sqrt(x*x+y*y));

}

int main()

{

 

    Point m1(1,1),m2(4,5);

    cout<<dist(m1,m2)<<endl;

    return 0;

}

构造函数,析构函数及静态数据成员的综合应用

#include<iostream>

using namespace std;

class Stu

{

public:

~Stu();

Stu(char Name[10],char Num[20],int Old);

void show();

    void showcount();

private:

char name[10];

char num[20];

int old;

static int count ;//静态数据成员的声明

};

int Stu::count=0;//静态数据成员的初始化

Stu::Stu(char Name[10],char Num[20],int Old)

{   

strcpy(name,Name);

strcpy(num,Num);

old=Old;

count++;//静态数据成员的使用

}

Stu::~Stu()

{

cout<<endl;

}

void Stu::show()

{

cout<<name<<' '<<num<<' '<<old<<endl;

}

void Stu::showcount()

{

cout<<"count="<<count<<endl;

}

int main()

{

char name[10],num[20];

int old;

    cin>>name>>num>>old;

Stu t(name, num, old);

t.show();

t.showcount ();

return 0;

}

猜你喜欢

转载自blog.csdn.net/llxybm/article/details/82377499