C++ 笛卡尔类c++;

C++ 笛卡尔类c++;,c++,class,cartesian,cartesian-coordinates,C++,Class,Cartesian,Cartesian Coordinates,我有一个笛卡尔类的代码,现在我想添加一个memberwise赋值来设置coord1到coord2的值。我不太清楚该怎么做。为类对象编写memberwise赋值的语法是什么?我会对类本身进行更改,还是将它们放在主函数中 #include <iostream> using namespace std; class Cartesian { private: double x; double y; public: Cartesian( double a = 0,

我有一个笛卡尔类的代码,现在我想添加一个memberwise赋值来设置coord1到coord2的值。我不太清楚该怎么做。为类对象编写memberwise赋值的语法是什么?我会对类本身进行更改,还是将它们放在主函数中

#include <iostream>
using namespace std;

class Cartesian
{
private:
    double x;
    double y;

public:
    Cartesian( double a = 0, double b = 0) : x(a), y(b){}

    friend istream& operator>>(istream&, Cartesian&);
    friend ostream& operator<<(ostream&, const Cartesian&);
};

istream& operator>>(istream& in, Cartesian& num)
{
    cin >> num.x >> num.y;
    return in;
}

ostream& operator<<( ostream& out, const Cartesian& num)
{
    cout << "(" << num.x << ", " << num.y << ")" << endl;
    return out;
}

int main()
{
Cartesian   coord1, coord2;

    cout << "Please enter the first coordinates in the form x y" << endl;
    cin >> coord1;

    cout << "Please enter the second coordinates in the form x y" << endl;
    cin >> coord2;

    cout << coord1;
    cout << coord2;

    return 0;
}
#包括
使用名称空间std;
类笛卡尔
{
私人:
双x;
双y;
公众:
笛卡尔(双a=0,双b=0):x(a),y(b){}
friend istream&operator>>(istream&笛卡尔&);
friend ostream和运算符(istream和in、笛卡尔和num)
{
cin>>num.x>>num.y;
返回;
}

ostream&operator方法很简单:通过使用
struct
并省略访问说明符,使所有成员
公开。如果仍然提供完全访问,则数据隐藏没有意义


此外,您还可以省去所有自定义构造函数,因为您可以一次分配所有成员,而不必使用任何构造函数。

方法很简单:使用
struct
并省去访问说明符,使所有成员
公开


此外,您还可以省去所有自定义构造函数,因为您可以一次分配所有成员,而不必使用任何构造函数。

方法很简单:使用
struct
并省去访问说明符,使所有成员
公开


此外,您还可以省去所有自定义构造函数,因为您可以一次分配所有成员,而不必使用任何构造函数。

方法很简单:使用
struct
并省去访问说明符,使所有成员
公开


此外,您还可以省去所有自定义构造函数,因为您可以一次分配所有成员,而不必使用任何构造函数。

只需将get和set方法添加到类中即可

void Cartesian::SetX(double new_x)
{
    x = new_x;
}

以及用于
GetY()
SetY(双y)
的类似函数。这将使您能够在需要时访问
x
y
的值并将其设置为所需的值

或者,只需将这些成员上的访问说明符更改为
public
,而不是
private

另外,请注意,您的类有一个默认的
操作符=()
,如果您将
笛卡尔
的一个实例分配给另一个实例,该操作符将以成员方式复制成员

因此,如果你有

 Cartesian point1(1.0,2.0);
 Cartesian point2(4.5,4.3);
您只需通过以下方式将
point1
分配给
point2

 point2 = point1;

只需将get和set方法添加到类中

void Cartesian::SetX(double new_x)
{
    x = new_x;
}

以及用于
GetY()
SetY(双y)
的类似函数。这将使您能够在需要时访问
x
y
的值并将其设置为所需的值

或者,只需将这些成员上的访问说明符更改为
public
,而不是
private

另外,请注意,您的类有一个默认的
操作符=()
,如果您将
笛卡尔
的一个实例分配给另一个实例,该操作符将以成员方式复制成员

因此,如果你有

 Cartesian point1(1.0,2.0);
 Cartesian point2(4.5,4.3);
您只需通过以下方式将
point1
分配给
point2

 point2 = point1;

只需将get和set方法添加到类中

void Cartesian::SetX(double new_x)
{
    x = new_x;
}

以及用于
GetY()
SetY(双y)
的类似函数。这将使您能够在需要时访问
x
y
的值并将其设置为所需的值

或者,只需将这些成员上的访问说明符更改为
public
,而不是
private

另外,请注意,您的类有一个默认的
操作符=()
,如果您将
笛卡尔
的一个实例分配给另一个实例,该操作符将以成员方式复制成员

因此,如果你有

 Cartesian point1(1.0,2.0);
 Cartesian point2(4.5,4.3);
您只需通过以下方式将
point1
分配给
point2

 point2 = point1;

只需将get和set方法添加到类中

void Cartesian::SetX(double new_x)
{
    x = new_x;
}

以及用于
GetY()
SetY(双y)
的类似函数。这将使您能够在需要时访问
x
y
的值并将其设置为所需的值

或者,只需将这些成员上的访问说明符更改为
public
,而不是
private

另外,请注意,您的类有一个默认的
操作符=()
,如果您将
笛卡尔
的一个实例分配给另一个实例,该操作符将以成员方式复制成员

因此,如果你有

 Cartesian point1(1.0,2.0);
 Cartesian point2(4.5,4.3);
您只需通过以下方式将
point1
分配给
point2

 point2 = point1;

您需要重载运算符=。请检查此线程:以及该线程中提到的链接。这将为您提供一个概览。@user3493289默认值(自动生成)operator=在这种情况下就足够了…@PiotrNycz-是的,我知道。我只是让他指向他如何实现一个operator=的链接。你需要重载operator=。请检查这个线程:以及该线程中提到的链接。这应该会给你一个概览。@user3493289 default(自动生成)operator=在这种情况下就足够了…@PiotrNycz-是的,我知道。我只是让他指向他如何实现一个operator=的链接。你需要重载operator=。请检查这个线程:以及该线程中提到的链接。这应该会给你一个概览。@user3493289 default(自动生成)operator=在这种情况下就足够了…@PiotrNycz-是的,我知道。我只是让他指向他如何实现一个operator=的链接。你需要重载operator=。请检查这个线程:以及该线程中提到的链接。这应该会给你一个概览。@user3493289 default(自动生成)operator=在这种情况下就足够了…@PiotrNycz-是的,我知道。我只是给他指了一些关于他如何实现一个的链接。