C++ 使用C+;中的const reference参数访问函数中的成员的最佳实践+;
实现以下场景的最佳实践是什么:C++ 使用C+;中的const reference参数访问函数中的成员的最佳实践+;,c++,reference,parameter-passing,constants,C++,Reference,Parameter Passing,Constants,实现以下场景的最佳实践是什么: 类A包含类型为B的成员对象 class A { private: B b; }; class B { private: int x; }; 获取类型为A的对象作为const&参数的打印函数应打印A和b的成员: void Print(const A& a) { cout << a.b.x; } 关于其成员访问权,A类应如何实施 “b”应该公开吗 “class A”是否应该为b提供2个getter(1个用于“b”的写访问,1个用
类A
包含类型为B
的成员对象
class A
{
private:
B b;
};
class B
{
private:
int x;
};
获取类型为A
的对象作为const&
参数的打印函数应打印A
和b
的成员:
void Print(const A& a)
{
cout << a.b.x;
}
关于其成员访问权,A类
应如何实施
- “
”应该公开吗李>b
- “
”是否应该为b提供2个getter(1个用于“b”的写访问,1个用于“b”的读访问)class A
在我的实际系统中,类
A
和B
要大得多,它们是一个庞大的遗留系统的一部分。在这个遗留系统中,Print
和Read
是“视图模型”的成员函数,其中,Print
将值写入GUI,Read
从GUI读取值,并设置a
和B
的成员。因此A
和B
的职责是保存数据(某种数据模型)。您应该使用成员函数,并尽可能地封装数据。为此,Print
可以是a
的成员函数:
class A
{
B b;
public:
void Print() const /*Let's add some const correctness*/
{
b.Print();
}
};
void setX(int x)
{
b = x;
}
及
最后,对于打印,惯用的方法是重载
,而应该使用成员函数,并尽可能地封装数据。为此,Print
可以是a
的成员函数:
class A
{
B b;
public:
void Print() const /*Let's add some const correctness*/
{
b.Print();
}
};
void setX(int x)
{
b = x;
}
及
最后,对于您的打印,惯用的方法是过载为什么不将读写的责任转移到B
,或者在这种情况下,另一种过载Print
和Read
?但是,您仍然需要使这些函数成为成员或朋友。我特别喜欢Read
函数实际编写的方式。让他们保持猜测和警觉。在这种情况下,为什么不把读写的责任转移到B
,或者另一个Print
和Read
过载?但是,您仍然需要使这些函数成为成员或朋友。我特别喜欢Read
函数实际编写的方式。让他们保持猜测和警惕。