class Complex
{
private:
float real, imaginary;
public:
Complex(float real, float imaginary)
{
this->real = real;
this->imaginary = imaginary;
}
float getReal() const
{
return this->real;
}
float getImaginary() const
{
return this->imaginary;
}
Complex operator+(Complex other)
{
return Complex(this->real + other.real, this->imaginary + other.imaginary); // Here I can access other class' private member without using getter methods.
}
};
int main()
{
Complex first(5, 2);
Complex second(7, 12);
Complex result = first + second; // No error
std::cout << result.getReal() << " + " << result.getImaginary() << "i"; // But here I have to use getters in order to access those members.
return 0;
}
为什么我可以从另一个班级访问班级的私人成员?我以为我必须使用吸气剂来访问其他班级的私人成员。但是事实证明,如果我从另一个类中调用它,则不再需要这些获取器,并且可以直接访问它们。但这在该类之外是不可能的。
Complex result = first + second;
这将为Complex类调用operator +,operator本身是Complex类的一部分,因此,即使对于作为参数传递的other
实例,它也可以访问该类的所有成员。
std::cout << result.getReal() << " + " << result.getImaginary() << "i";
operator <result.real,因为它在此上下文中是私有的,即在Complex
类之外。
这不是另一堂课;它是另一个instance,并且A
中的函数可以访问另一个private
的A
成员。这就是它的工作原理。否则,将不可能像您一样做事情,而我们需要能够做这些事情。