&引用;“未定义引用”;声明为C++;静态成员变量 我已经开始用java编程,我刚刚达到了我认为是一个“好”的语言知识水平。 我决定用C++开始编程,我对这种语言很陌生,但我学习速度很快,我觉得离java不远。
我创建了一个测试类,该类的属性为值和名称,全局变量为对象计数器&引用;“未定义引用”;声明为C++;静态成员变量 我已经开始用java编程,我刚刚达到了我认为是一个“好”的语言知识水平。 我决定用C++开始编程,我对这种语言很陌生,但我学习速度很快,我觉得离java不远。,c++,class,object,methods,static,C++,Class,Object,Methods,Static,我创建了一个测试类,该类的属性为值和名称,全局变量为对象计数器 #include<iostream> /* local variable is same as a member's name */ class Test { private: double x; std::string name; static int nb; public: Test(double x, std::string n)
#include<iostream>
/* local variable is same as a member's name */
class Test
{
private:
double x;
std::string name;
static int nb;
public:
Test(double x, std::string n)
{
this->x=x;
this->name=n;
nb=nb+1;
}
void setX (double x)
{
// The 'this' pointer is used to retrieve the object's x
// hidden by the local variable 'x'
this->x = x;
}
double getX()
{
return this->x;
}
std::string getName()
{
return this->name;
}
static int getNb()
{
return nb;
}
};
int main()
{
Test obj(3.141618, "Pi");
std::cout<<obj.getX()<<" "<<obj.getName()<<" "<<Test::getNb()<<std::endl;
return 0;
}
给我一些中文
在C++中,<代码>静态< /COD>变量基本上是全局变量的句法糖。与全局变量一样,它们必须在一个源文件中定义,其中包括:
int Test::nb;
如果你想用一个特定的值初始化它
int Test::nb = 5; // or some other expression
您的变量
static int nb
需要初始化,因此需要在类之后添加声明
class YourClass
{
// some stuff
}; // Your class ends here
int Test::nb = 0;
int main() ...
这里有一些教程和信息,
Test(double x,std::string){this->x=x;this->name=n;nb=nb+1;}
可以写得更简洁,如Test(double x,std::string name):x(x_uu),name(name_u){++nb nb;}
。尽可能使用初始值设定项来实现win和proffit。问得好。所使用的代码可以缩减很多,但在其他方面要简洁明了。无法针对他们保留副本,因为在知道关键字之前很难通过谷歌搜索。定义(而不是你称之为“声明”)不应该在头文件中(你的答案看起来像是建议在类定义之后将其写入头文件)@M.M您的权利是“定义”不应该在头文件中。我假设整个示例都写在一个main.cc文件中,因为类定义后面跟着main函数。
class YourClass
{
// some stuff
}; // Your class ends here
int Test::nb = 0;
int main() ...