C++ 公共全局变量还是get()和set()方法?
在其他类中访问和修改特定类的变量的更好方法是什么?使用公共全局变量或使用get()和set()?如果你真的很懒,就使用publicC++ 公共全局变量还是get()和set()方法?,c++,C++,在其他类中访问和修改特定类的变量的更好方法是什么?使用公共全局变量或使用get()和set()?如果你真的很懒,就使用public 如果您希望代码可维护,请使用get和set。如果您真的很懒,请使用public 如果您希望代码可维护,请使用get和set。如果您真的很懒,请使用public 如果您希望代码可维护,请使用get和set。如果您真的很懒,请使用public 如果希望代码可维护,请使用get和set。而不是公共成员或专用的setter和getter方法,请尝试在接口中提供链接到类的任何
如果您希望代码可维护,请使用get和set。如果您真的很懒,请使用public
如果您希望代码可维护,请使用get和set。如果您真的很懒,请使用public
如果您希望代码可维护,请使用get和set。如果您真的很懒,请使用public
如果希望代码可维护,请使用get和set。而不是公共成员或专用的setter和getter方法,请尝试在接口中提供链接到类的任何逻辑 也就是说,向量的长度在逻辑上与向量本身相关联,因此您不希望为程序的其余部分提供直接或间接访问数据的任何便利,而是将长度作为接口的一部分提供 示例getter: 示例长度接口: 使用第二个,您可以自由更改数据成员(即,用一个
双m[2];
替换两个成员)
setter也是如此:提供类转换逻辑作为有意义的接口的一部分
示例getter和setter:
界面示例:
不要使用公共成员或专用的setter和getter方法,而是尝试使用接口提供链接到类的任何逻辑 也就是说,向量的长度在逻辑上与向量本身相关联,因此您不希望为程序的其余部分提供直接或间接访问数据的任何便利,而是将长度作为接口的一部分提供 示例getter: 示例长度接口: 使用第二个,您可以自由更改数据成员(即,用一个
双m[2];
替换两个成员)
setter也是如此:提供类转换逻辑作为有意义的接口的一部分
示例getter和setter:
界面示例:
不要使用公共成员或专用的setter和getter方法,而是尝试使用接口提供链接到类的任何逻辑 也就是说,向量的长度在逻辑上与向量本身相关联,因此您不希望为程序的其余部分提供直接或间接访问数据的任何便利,而是将长度作为接口的一部分提供 示例getter: 示例长度接口: 使用第二个,您可以自由更改数据成员(即,用一个
双m[2];
替换两个成员)
setter也是如此:提供类转换逻辑作为有意义的接口的一部分
示例getter和setter:
界面示例:
不要使用公共成员或专用的setter和getter方法,而是尝试使用接口提供链接到类的任何逻辑 也就是说,向量的长度在逻辑上与向量本身相关联,因此您不希望为程序的其余部分提供直接或间接访问数据的任何便利,而是将长度作为接口的一部分提供 示例getter: 示例长度接口: 使用第二个,您可以自由更改数据成员(即,用一个
双m[2];
替换两个成员)
setter也是如此:提供类转换逻辑作为有意义的接口的一部分
示例getter和setter:
界面示例:
公共数据成员不受您的控制。您或您的代码用户可以从任何地方访问它们,因此您无法更改它们 举个简单的例子——如果您想更改全局变量的数据类型,您必须在访问它的任何地方更改代码。如果您有setter和getter,只需向它们添加转换
使用setter和getter,您可以添加检查输入或输出是否有效和安全的功能。公共数据成员不受您的控制。您或您的代码用户可以从任何地方访问它们,因此您无法更改它们 举个简单的例子——如果您想更改全局变量的数据类型,您必须在访问它的任何地方更改代码。如果您有setter和getter,只需向它们添加转换
使用setter和getter,您可以添加检查输入或输出是否有效和安全的功能。公共数据成员不受您的控制。您或您的代码用户可以从任何地方访问它们,因此您无法更改它们 举个简单的例子——如果您想更改全局变量的数据类型,您必须在访问它的任何地方更改代码。如果您有setter和getter,只需向它们添加转换
使用setter和getter,您可以添加检查输入或输出是否有效和安全的功能。公共数据成员不受您的控制。您或您的代码用户可以从任何地方访问它们,因此您无法更改它们 举个简单的例子——如果您想更改全局变量的数据类型,您必须在访问它的任何地方更改代码。如果您有setter和getter,只需向它们添加转换
使用setter和getter,您可以添加检查输入或输出是否有效和安全。没有公共数据成员。任何公共的东西都永远是API的一部分,你需要支持到生命垂危……或者如果只在自己的项目中使用:你需要a)一个非常好的重构工具,或者b)正则表达式搜索和替换技能(如果每次更改数据成员)。)注意。第三种选择:将另一个类声明为
friend
,因此应该使用get()和set()方法?没有公共数据成员。任何公共的东西都永远是API的一部分,你需要支持到生命垂危……或者如果只在自己的项目中使用:你需要a)一个非常好的重构工具,或者b)正则表达式搜索和替换技能(如果每次更改数据成员)。)注意。第三种选择:将另一个类声明为friend
,因此应该使用get()和set()方法?没有公共数据成员。任何公开的东西都是永远的
class v2d
{
double mx, my;
public:
double get_x() const { return mx; }
double get_y() const { return my; }
};
bool foo (v2d const &v)
{
using std::sqrt;
return sqrt(v.get_x()*v.get_x() + v.get_y()*v.get_y()) > 1.0;
}
class v2d
{
double mx, my;
public:
double len () const
{
using std::sqrt;
return sqrt(mx*mx + my*my);
}
};
void foo (v2d const &v)
{
return v.len() > 1.0;
}
class v2d
{
double mx, my;
public:
void set_x(double new_x) { mx = new_x; }
void set_y(double new_y) { my = new_y; }
double get_x() const { return mx; }
double get_y() const { return my; }
};
void normalize (v2d &v)
{
using std::sqrt;
double const len = sqrt(v.get_x()*v.get_x() + v.get_y()*v.get_y());
v.set_x(v.get_x()/len);
v.set_y(v.get_y()/len);
}
class v2d
{
double mx, my;
public:
double len () const
{
using std::sqrt;
return sqrt(mx*mx + my*my);
}
v2d& operator/= (double const factor)
{
mx /= factor;
my /= factor;
return *this;
}
};
void normalize (v2d &v)
{
v /= v.len();
}