Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是静态方法?如何以及何时使用它们? 我正在寻找C++中静态方法的信息。 我搜索了一下,但老实说,我什么也看不清楚_C++_Static Methods_Static Members - Fatal编程技术网

什么是静态方法?如何以及何时使用它们? 我正在寻找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如果可以的话,买一本教科书,即使是一本糟糕的教科书也比互联网更可靠。我真的不喜欢你的解释。这更多的是关于静态方法的规范,而不是静态方法的规范
静态方法,尽管可能很清楚理解其规范的人是什么。我想,这是更好的解释。老实说,我不喜欢你的解释。这更多的是关于静态方法的规范,而不是什么是静态方法,尽管理解其规范的人可能很清楚什么是静态方法。我认为,这是更好的解释