C++中类与类之间的赋值语句好奇怪,还有 有带括号和不带括号的区别,望大神们指点~~~ T T 如问题描述:
/*定义一个点类Point包括x坐标和y坐标(int)。定义一个圆类Circle,有数据成员半径和表示圆心坐标的点类对象。*/#include<iostr...
/*定义一个点类Point包括x坐标和y坐标(int)。定义一个圆类Circle,有数据成员半径和表示圆心坐标的点类对象。*/
#include <iostream>
using namespace std;
const double PI=3.14159;
/**********Program**********/
class Point{
int x,y;
public: Point(int xx=0,int yy=0){ x=xx; y=yy;}
void SetP(int xx,int yy ){ x=xx;y=yy; }
int getY(){ return y;}
int getX(){ return x;}};
class Circle{
double radius;
Point p1;
public:
Circle(Point m,double R):p1(m),radius(R){}
Circle():radius(0){} void show();
/*主要问题在SetCC,下面这种赋值方式是可以通过编译的。*/
void SetCC(Point m,double R){
p1=Point(m.getX(),m.getY());
radius=R;}
/*再提供第二种赋值方式:
void SetCC(Point m,double R):p1(m),radius(R){}
就是类似于构造函数Circle里的那样。
关于这两个东西我有两个问题:
★★★★★★★★★★★★★★★★★★★★★★★
两种赋值方式为什么一个可以一个不可以给SetCC赋值?
为什么第一种赋值语句里“p1=Point(m.getX(),m.getY());”getX一定要带括号?
★★★★★★★★★★★★★★★★★★★★★★★★*/
double getArea(){
return 3.14159*radius*radius;}};
/********** End **********/
void Circle::show(){
cout<<"圆心X坐标="<<p1.getX()<<",圆心Y坐标="<<p1.getY()<<endl;
cout<<"圆半径="<<radius<<endl;}
int main(){
Point p1(9,2),p2; //9为x坐标,2为y坐标
Circle c1(p1,7),c2; //7为半径 p1为圆心点
c1.show();
cout<<"圆的面积="<<c1.getArea()<<endl;
p2.SetP(1,1);//改变圆心坐标
c2.SetCC(p2,4);//以p2为圆心坐标,改变c2的半径
c2.show();//显示c2
cout<<"圆的面积="<<c2.getArea()<<endl;
return 0; 展开
#include <iostream>
using namespace std;
const double PI=3.14159;
/**********Program**********/
class Point{
int x,y;
public: Point(int xx=0,int yy=0){ x=xx; y=yy;}
void SetP(int xx,int yy ){ x=xx;y=yy; }
int getY(){ return y;}
int getX(){ return x;}};
class Circle{
double radius;
Point p1;
public:
Circle(Point m,double R):p1(m),radius(R){}
Circle():radius(0){} void show();
/*主要问题在SetCC,下面这种赋值方式是可以通过编译的。*/
void SetCC(Point m,double R){
p1=Point(m.getX(),m.getY());
radius=R;}
/*再提供第二种赋值方式:
void SetCC(Point m,double R):p1(m),radius(R){}
就是类似于构造函数Circle里的那样。
关于这两个东西我有两个问题:
★★★★★★★★★★★★★★★★★★★★★★★
两种赋值方式为什么一个可以一个不可以给SetCC赋值?
为什么第一种赋值语句里“p1=Point(m.getX(),m.getY());”getX一定要带括号?
★★★★★★★★★★★★★★★★★★★★★★★★*/
double getArea(){
return 3.14159*radius*radius;}};
/********** End **********/
void Circle::show(){
cout<<"圆心X坐标="<<p1.getX()<<",圆心Y坐标="<<p1.getY()<<endl;
cout<<"圆半径="<<radius<<endl;}
int main(){
Point p1(9,2),p2; //9为x坐标,2为y坐标
Circle c1(p1,7),c2; //7为半径 p1为圆心点
c1.show();
cout<<"圆的面积="<<c1.getArea()<<endl;
p2.SetP(1,1);//改变圆心坐标
c2.SetCC(p2,4);//以p2为圆心坐标,改变c2的半径
c2.show();//显示c2
cout<<"圆的面积="<<c2.getArea()<<endl;
return 0; 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询