这些函数常常有着下面的形式:
class CEmployee
{
public:
void set_name( const std::string & str)
{
std::cout << "settting
name..." << std::endl ;
m_strName = str;
}
const std::string & get_name() const
{
std::cout << "getting
name..." << std::endl ;
return m_strName;
}
/* 其它函数,如get_name、set_name
*/
};
为了隐藏实现细节,你可以提供setter和getter函数。你不应该提供到底层细节的直接或者无限制的访问。下面是你应该尽量避免的:
class CEmployee
{
public:
// 提供了对底层细节的无限制访问
std::string & name()
{ return m_strName; }
};
你希望有一种更加友好的访问和修改属性的方法,并且用这种方法不会丢失任何实现隐藏的好处。
例如
void print( const std::string & str)
{ std::cout << str; }
CEmployee test;
// 内在调用set_name
test.name() = "new name";
//内在调用get_name
print( test.name());