目录
面向对象实例
问题一:#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;
}
C++之面向对象实例
最新推荐文章于 2025-02-12 16:25:29 发布