什么是静态方法?如何以及何时使用它们? 我正在寻找C++中静态方法的信息。 我搜索了一下,但老实说,我什么也看不清楚
静态函数是否仅包含静态数据成员的函数?类的静态方法没有此指针。这意味着它们无法访问实例成员数据。静态或其他方法不包含数据成员。但是,它们可以在堆栈或堆上声明变量什么是静态方法?如何以及何时使用它们? 我正在寻找C++中静态方法的信息。 我搜索了一下,但老实说,我什么也看不清楚,c++,static-methods,static-members,C++,Static Methods,Static Members,静态函数是否仅包含静态数据成员的函数?类的静态方法没有此指针。这意味着它们无法访问实例成员数据。静态或其他方法不包含数据成员。但是,它们可以在堆栈或堆上声明变量 静态方法通常用类名myClass::foo调用,因为使用它们不必声明类的实例,但也可以用实例myInstance.foo调用。类的静态方法没有此指针。这意味着它们无法访问实例成员数据。静态或其他方法不包含数据成员。但是,它们可以在堆栈或堆上声明变量 静态方法通常用类名MyCal::Fo调用,因为您不必声明类的实例来使用它们,但可以用实例
静态方法通常用类名myClass::foo调用,因为使用它们不必声明类的实例,但也可以用实例myInstance.foo调用。类的静态方法没有此指针。这意味着它们无法访问实例成员数据。静态或其他方法不包含数据成员。但是,它们可以在堆栈或堆上声明变量
静态方法通常用类名MyCal::Fo调用,因为您不必声明类的实例来使用它们,但可以用实例MyStasc.Fo../P>> P>静态方法在C++类中调用,就像java类中的静态方法一样。是不需要实际实例化对象或类实例就可以使用的方法
使用类的标准非静态方法的唯一方法是创建对象或实例化类的实例。然后,当您使用在类的特定对象或实例上操作的方法时 静态方法有一些限制。例如,不能在静态方法中使用this指针。这是因为类的静态方法不与特定的对象相关联。相反,它是一种通用方法,不与任何特定对象绑定 我在类中看待静态方法的方式是,当我这样做时,我创建一个特定的名称空间,即类名,然后添加一个只能使用该特定名称空间访问的函数 类中的静态变量是在应用程序启动时创建的,可以在不创建类的特定实例的情况下进行访问。静态变量也由类的所有实例共享 因此,对于即时差异示例,可能存在编译错误:class myAclass {
public:
myAclass(); // constructor
void function1 (int iValueSet); // a standard method
static void functionStatic (int iValueSet); // a static method
private:
int iValue; // an object specific variable
static int iValueStatic; // a class general variable shared by all instances of this class
};
int myAclass::iValueStatic = 0; // init the class static variable
myAclass::myAclass () : iValue (0)
{
}
void myAclass::function1 (int iValueSet)
{
iValue = iValueSet; // set the iValue for this particular object
iValueStatic = iValueSet; // set the shared iValueStatic for all instances
}
void myAclass::functionStatic (int iValueSet)
{
// iValue = iValueSet; // ERROR this is not allowed as iValue is not static
iValueStatic = iValueSet; // works since iValueStatic is static
}
然后如何使用这个类:
myAclass jj; // create an object instance
jj.function1(5); // access the non-static method to change the object data
myAclass::functionStatic(8); // set the static iValueStatic
当然,由于struct与class类似,只是默认情况下struct成员是公共的,所以struct也可以这样做
使用静态函数和变量的一个原因是使用。另一个用法是,在.C++类中,与java类一样,静态方法是可用的方法,而不必实例化对象或类的实例。 使用类的标准非静态方法的唯一方法是创建对象或实例化类的实例。然后,当您使用在类的特定对象或实例上操作的方法时 静态方法有一些限制。例如,不能在静态方法中使用this指针。这是因为类的静态方法不与特定的对象相关联。相反,它是一种通用方法,不与任何特定对象绑定 我在类中看待静态方法的方式是,当我这样做时,我创建一个特定的名称空间,即类名,然后添加一个只能使用该特定名称空间访问的函数 类中的静态变量是在应用程序启动时创建的,可以在不创建类的特定实例的情况下进行访问。静态变量也由类的所有实例共享 因此,对于即时差异示例,可能存在编译错误:
class myAclass {
public:
myAclass(); // constructor
void function1 (int iValueSet); // a standard method
static void functionStatic (int iValueSet); // a static method
private:
int iValue; // an object specific variable
static int iValueStatic; // a class general variable shared by all instances of this class
};
int myAclass::iValueStatic = 0; // init the class static variable
myAclass::myAclass () : iValue (0)
{
}
void myAclass::function1 (int iValueSet)
{
iValue = iValueSet; // set the iValue for this particular object
iValueStatic = iValueSet; // set the shared iValueStatic for all instances
}
void myAclass::functionStatic (int iValueSet)
{
// iValue = iValueSet; // ERROR this is not allowed as iValue is not static
iValueStatic = iValueSet; // works since iValueStatic is static
}
然后如何使用这个类:
myAclass jj; // create an object instance
jj.function1(5); // access the non-static method to change the object data
myAclass::functionStatic(8); // set the static iValueStatic
当然,由于struct与class类似,只是默认情况下struct成员是公共的,所以struct也可以这样做
使用静态函数和变量的一个原因是使用。另一个用法是.< /p>你的C++教科书说了什么?静态函数和静态方法是不同的,但是它们都是在开始时有单词静态的。函数不包含成员。没有教科书,试图自己学习。internet@Arihant如果可以的话,买一本教科书,即使是一本蹩脚的教科书也比互联网更可靠。你的C++教科书说了什么?静态函数和静态方法是不同的,但是它们都是在开始时有单词静态的。函数不包含成员。没有教科书,试图自己学习。internet@Arihant如果可以的话,买一本教科书,即使是一本糟糕的教科书也比互联网更可靠。我真的不喜欢你的解释。这更多的是关于静态方法的规范,而不是静态方法的规范
静态方法,尽管可能很清楚理解其规范的人是什么。我想,这是更好的解释。老实说,我不喜欢你的解释。这更多的是关于静态方法的规范,而不是什么是静态方法,尽管理解其规范的人可能很清楚什么是静态方法。我认为,这是更好的解释