在下面的代碼中,爲什麼函數SymmetricAxis可以在p3中更改x和y? 我認爲const函數將不允許改變成員的值。但它確實如此,所以我很困惑。 此外,如果我將p3更改爲const CPoint p3,編譯器不允許我這樣做。但是,如果p3不是const,程序可以更改p3中的成員。類中的const函數可以改變成員值嗎?
#include<iostream>
#include<math.h>
using namespace std;
class CPoint
{
private:
double x;
double y;
public:
CPoint(double xx = 0, double yy = 0) : x(xx), y(yy) {};
double Distance(CPoint p) const;
double Distance0() const;
CPoint SymmetricAxis(char style) const;
void input();
void output();
};
void CPoint::input(){
cout << "Please enter point location: x y" << endl;
cin >> x >> y;
}
void CPoint::output(){
cout << "X of point is: " << x << endl << "Y of point is: " << y << endl;
}
CPoint CPoint::SymmetricAxis(char style) const{
CPoint p1;
switch (style){
case 'x':
p1.y = -y;
break;
case 'y':
p1.x = -x;
case '0':
p1.x = -x;
p1.y = -y;
break;
}
return p1;
}
int main(){
CPoint p1, p2(1, 10), p3(1,10);
p1.input();
p1.output();
p3 = p1.SymmetricAxis('0');
p3.output();
return 0;
}