}
intmain()
{
chars[100];
gets(s);
countA(s);
A.computer();
return0;
}
三角形三边:
#include
#include
classT
{
private:
doublea,b,c;
public:
T(doublea1,doubleb1,doublec1)
{a=a1;b=b1;c=c1;}
voidJ();
};
voidT:
:
J()
{
if(a+b>c&&a+c>b&&b+c>a)
{
cout<<"能构成一个三角形"<if(fabs(a-b)<0.001&&fabs(a-c)<0.001)
cout<<"能构成一个等边三角形"<elseif(fabs(a-b)<0.001||fabs(a-c)<0.001||fabs(b-c)<0.001)
cout<<"能够构成一个等腰三角形"<elseif(fabs(a*a+c*c-b*b)<0.001||fabs(a*a+b*b-c*c)<0.001||fabs(c*c+b*b-a*a)<0.001)
cout<<"并且是一个直角三角形"<else
cout<<"它是一个一般三角形"<}
else
cout<<"不能构成一个三角形"<}
voidmain()
{
intx,y,z;
cout<<"请输入三角形的三条边:
"<cin>>x>>y>>z;
TA(x,y,z);
A.J();
}
友元函数:
列1
#include
classB;
classA
{
private:
doublew,p;
public:
A(doubleww,doublepp){w=ww;p=pp;}
friendintcom(constA&a,constB&b);
};
classB
{
private:
doublew,p;
public:
B(doubleww,doublepp){w=ww;p=pp;}
friendintcom(constA&a,constB&b);
};
intcom(constA&a,constB&b)
{
if(a.p*a.w>b.p*b.w)
return1;
elseif(a.p*a.w==b.p*b.w)
return0;
else
return-1;
}
intmain()
{
doublex,y;
cout<<"请输入野兔的质量和价格:
";
cin>>x>>y;
Aaa(x,y);
cout<<"请输入鱼的质量和价格:
";
cin>>x>>y;
Bbb(x,y);
inti=com(aa,bb);
if(i>0)
cout<<"野兔总价大于鱼总价格:
"<elseif(i==0)
cout<<"野兔总价等于鱼总价格:
"<else
cout<<"野兔总价小于鱼总价格:
"<return0;
}
列2
#include
#include
#include
classB;
classA
{
private:
doublex,y;
public:
A(doubleww,doublepp){x=ww;y=pp;}
intcom(constB&b);
};
classB
{
private:
doublew,p;
public:
B(doubleww,doublepp){w=ww;p=pp;}
friendintA:
:
com(constB&b);
};
intA:
:
com(constB&b)
{
if(x*y>b.w*b.p)
cout<<"A>B"<elseif(x*y==b.w*b.p)
cout<<"A==B"<else
cout<<"A
return0;
}
voidmain()
{
intx,y;
Aa(x,y);
cout<<"请输入肉类的质量和价格:
";
cin>>x>>y;
cout<<"请输入鱼类的质量和价格:
";
cin>>x>>y;
Bb(x,y);
cout<<(b)<}
重载
列1
classA{
char*ps;
public:
A(){ps=0;}
A(char*s){ps=newchar[strlen(s)+1];strcpy(ps,s);}
~A(){if(ps)deleteps;}
char*GetS(){returnps;}
A&operator=(A&b);//重载赋值运算符
};
A&A:
:
operator=(A&b)//重载赋值运算符
{if(ps)delete[]ps;
if(b.ps){ps=newchar[strlen(b.ps)+1];strcpy(ps,b.ps);}
elseps=0;
return*this;
}
voidmain(void)
{As1("China!
"),s2("Computer!
");
s2=s1;
cout<<"s1="<cout<<"s2="<}
列2
classincount
{intc1,c2;
public:
incount(inta=0,intb=0){c1=a;c2=b;}
voidShow(void){cout<<"c1="<friendincountoperator++(incount&);//前置
friendincountoperator++(incount&,int);//后置
};
incountoperator++(incount&c)
{c.c1++;c.c2++;returnc;}
incountoperator++(incount&c,int)
{incountcc;cc=c;c.c1++;c.c2++;returncc;}
voidmain(void)
{incountic1(10,20),ic2(100,200),ic3,ic4;
ic1.Show();
ic2.Show();
ic3=++ic1;//ic3=operator(ic1)
ic4=ic2++;//ic4=operator(ic2,n)
ic3.Show();
ic4.Show();}
列3
classThreeD{
floatx,y,z;
public:
ThreeD(floata=0,floatb=0,floatc=0){x=a;y=b;z=c;}
friendThreeD&operator++(ThreeD&);//前置
friendThreeDoperator++(ThreeD&,int);//后置
voidShow(){cout<<"x="<};
ThreeD&operator++(ThreeD&t)
{t.x++;t.y++;t.z++;returnt;}
ThreeDoperator++(ThreeD&t,int)
{ThreeDtemp=t;t.x++;t.y++;t.z++;returntemp;}
voidmain(void)
{ThreeDm1(25,50,100),m2(1,2,3),m3;
m1.Show();
m3=++m1;
m1.Show();m3.Show();
m3=m2++;
m2.Show();m3.Show();
}
列4
classA
{inti;
public:
A(inta=0){i=a;}
voidShow(void){cout<<"i="<
friendAoperator++(A&a){a.i++;returna;}
friendAoperator++(A&a,intn)
{At;t.i=a.i;a.i++;returnt;}
};
voidmain(void)
{Aa1(10),a2,a3;
a2=++a1;
a3=a1++;
a2.Show();a3.Show();
}
列4
classA
{inti;
public:
A(inta=0){i=a;}
voidShow(void){cout<<"i="<
friendAoperator++(A&a){a.i++;returna;}
friendAoperator++(A&a,intn)
{At;t.i=a.i;a.i++;returnt;}
};
voidmain(void)
{Aa1(10),a2,a3;
a2=++a1;
a3=a1++;
a2.Show();a3.Show();
}
列5
classA
{inti;
public:
A(inta=0){i=a;}
voidShow(void){cout<<"i="<
voidAddA(A&a,A&b)//利用函数进行类之间的运算
{i=a.i+b.i;}
Aoperator+(A&a)//重载运算符+
{At;t.i=i+a.i;returnt;}
};
voidmain(void)
{Aa1(10),a2(20),a3;
a1.Show();
a2.Show();
a3=a1+a2;//重新解释了加法,可以直接进行类的运算
a3.AddA(a1,a2);//调用专门的功能函数
a3.Show();
}
列6
classroom{
floatLength;
floatWide;
public:
room(floata=0.0,floatb=0.0){Length=a;Wide=b;}
voidShow(void){cout<<"Length="<voidShowArea(void){cout<<"Area="<roomoperator+(room&);//重载运算符+,函数原型
};
roomroom:
:
operator+(room&r)//重载运算符,函数定义
{roomrr;
rr.Length=Length+r.Length;
rr.Wide=Wide+r.Wide;
returnrr;
}
voidmain(void)
{roomr1(3,2),r2(1,4),r3,r4;
r1.Show();r2.Show();
r3=r1+r2;r3.Show();
r4=r1+r2+r3;r4.Show();}
列7
#include
#include
classString
{
private:
char*p;
public:
String(constchar*q)
{
p=newchar[strlen(q)];
strcpy(p,q);
}
String()
{
p='\0';
}
voiddisplay();
friendStringoperator-(String&,String&);
friendStringoperator+(String&,String&);
Stringoperator=(constString&);
};
voidString:
:
display()
{
cout<
}
Stringoperator+(String&x,String&y)
{
Stringz;
char*p=newchar[strlen(x.p)+strlen(y.p)-1];
inti=0,j=0,len=0;
while(x.p[i]!
='\0')
{
p[len]=x.p[i];
len++;
i++;
}
while(y.p[j]!
='\0')
{
p[len]=y.p[j];
len++;
j++;
}
p[len]='\0';
z=p;
returnz;
}
Stringoperator-(String&x,String&y)
{
Stringz;
char*p=newchar[strlen(x.p)+strlen(y.p)+1];
inti,m;
for(i=0;x.p[i]!
='';i++)
p[i]=x.p[i];
for(m=0;y.p[m]!
='\0';m++)
p[i+m]=y.p[m];
p[i+m]='\0';
z=p;
returnz;
}
StringString:
:
operator=(constString&y)
{
delete[]p;
p=newchar[strlen(y.p)+1];
strcpy(p,y.p);
return(*this);
}
voidmain()
{
Strings1("浙江大学"),s3;
Strings2("计算机学院欢迎您!
");
s3=(s1+s2);
s3.display();
s3=(s1-s2);
s3.display();
}