私はしばらくの間、C++ を学ぼうとしています。最近、次のコードに出くわしました。
#include <iostream>
using namespace std;
class Point {
private:
double x_, y_;
public:
Point(double x, double y){
x_ = x;
y_ = y;
}
Point() {
x_ = 0.0;
y_ = 0.0;
}
double getX(){
return x_;
}
double getY(){
return y_;
}
void setX(double x){
x_ = x;
}
void setY(double y){
y_ = y;
}
void add(Point p){
x_ += p.x_;
y_ += p.y_;
}
void sub(Point p){
x_ -= p.x_;
y_ -= p.y_;
}
void mul(double a){
x_ *= a;
y_ *= a;
}
void dump(){
cout << "(" << x_ << ", " << y_ << ")" << endl;
}
};
int main(){
Point p(3, 1);
Point p1(10, 5);
p.add(p1);
p.dump();
p.sub(p1);
p.dump();
return 0;
}
そして、私の人生では、なぜメソッドが機能し、機能するのか理解できませvoid add(Point P)
んvoid sub( Point p )
。
"cannot access private properties of class Point"
or を使用しようとすると、 orのようなエラーが発生するべきではありませんadd
かsub
?
gcc
バージョンでコンパイルされたプログラム4.6.3
(Ubuntu/Linaro 4.6.3-1ubuntu5)
。実行すると、次のように出力されます。
(13, 6)
(3, 1)