C++ 当我们可以使用普通函数修改静态数据成员时,静态成员函数的需求是什么?
当我们可以使用普通函数修改静态数据成员时,静态成员函数的需求是什么。我对静态成员函数的需求感到困惑。请帮我澄清一下……静态意味着在类的上下文中,您可以始终调用方法,如ClassName::MethodName,而不是ClassName实例;instance.MethodNameC++ 当我们可以使用普通函数修改静态数据成员时,静态成员函数的需求是什么?,c++,static,static-members,C++,Static,Static Members,当我们可以使用普通函数修改静态数据成员时,静态成员函数的需求是什么。我对静态成员函数的需求感到困惑。请帮我澄清一下……静态意味着在类的上下文中,您可以始终调用方法,如ClassName::MethodName,而不是ClassName实例;instance.MethodName 方法-您可以从非静态成员函数调用静态成员函数,但如果静态成员函数不拥有一个或多个类实例,则不能反过来调用静态成员函数。有两个原因:一个是技术原因,另一个是关于代码可读性。技术方面很简单:静态方法仍然是类的方法,所以它可以
方法-您可以从非静态成员函数调用静态成员函数,但如果静态成员函数不拥有一个或多个类实例,则不能反过来调用静态成员函数。有两个原因:一个是技术原因,另一个是关于代码可读性。技术方面很简单:静态方法仍然是类的方法,所以它可以访问它的私有成员。它是类的一部分,它知道类的所有内部内容是可以的
但更重要的是类是名称空间。他们构造你的代码。通过使用静态方法,您可以告诉每个人它属于该类,并且与该类密切相关。可以调用静态函数,而无需创建该类的任何对象。 例如 假设您有一个包含房屋数量的class Street和一个静态方法addHouse,该方法将房屋数量增加1。 您希望创建一个新的house,这样您就可以在house的构造函数中调用addHouse。如果创建了非静态成员,则每次为House创建对象时都必须创建一个新的Street对象
class Street
{
static int numberOfHouses = 0;
public:
static void addHouse()
{
numberOfHouses ++;
}
void incrementHouse()
{
numberOfHouses++;
}
};
class House
{
public:
House()
{
Street::addHouse();
//this will not create a new object for Street
Street s;
s.incrementHouse();
// you would have to allocate memory for extra object of street class for this.
}
};
静态成员函数的需求是什么
您需要将类的成员函数声明为静态函数,以便能够在不实例化对象的情况下调用它。。例如,寻找单例模式
什么时候可以使用普通函数修改静态数据成员
不是所有的时间!除非先实例化对象,否则不能从非静态成员函数修改静态数据成员。另一方面,无论是否实例化了对象,您都可以通过静态成员函数执行此操作。类中的静态表示数据不属于创建的对象,而是属于类本身。对于所有对象,数据将是相同的,但不相等的,相同的地址
静态方法将使编译器确保它只处理静态数据。这也更清楚,因为当你看到一个静态方法时,你知道它不需要任何“活动”对象数据。今天是否有人对提交的每一篇文章都进行了投票?我不明白,为什么会出现这个问题,普通成员函数也可以访问类的私有成员。有什么只有静态函数可以做而成员不能做的吗?似乎我误解了你的问题。在正规函数下,我理解了通常的自由函数,它们不是任何类的一部分。成员函数通常被称为方法。哦,是的!!!我没有添加正常的成员函数。