分享

error LNK2001: 无法解析的外部符号 “public: static int Pe...

 无云666 2015-09-29

 今天练习类的编程时遇到的问题,源自静态变量的初始化问题。

下面是对static的一点讲解 
=============================================== 
  静态数据成员的使用方法和注意事项如下: 

  1、静态数据成员在定义或说明时前面加关键字static。 

  2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下: 

    <数据类型><类名>::<静态数据成员名>=<值> 

  这表明: 

  (1) 初始化在类体外进行,而前面不加static,以免与一般静态变量或对象相混淆。 

  (2) 初始化时不加该成员的访问权限控制符private,public等。 

  (3) 初始化时使用作用域运算符来标明它所属类,因此,静态数据成员是类的成员,而不是对象的成员。 

  3、静态数据成员是静态存储的,它是静态生存期,必须对它进行初始化。 

  4、引用静态数据成员时,采用如下格式: 

   <类名>::<静态成员名> 

  如果静态数据成员的访问权限允许的话(即public的成员),可在程序中,按上述格式来引用静态数据成员。  


exp: 
class aclass{ 
      public:   
              static int a; 
}; 
static int aclass::a=0; //初始化 

void main() 

        int amain=0; 
        amain=aclass::a;     //使用,无需定义相关类的变量而直接使用之。 
}  

对于 静态常量整型 可以在类中初始化,另外对于常量则必须在构造函数成员初始式列表里初始化。

#include <iostream>
using namespace std;
class Person
{
public:
const int a ;
static const int b = 2 ; // 对 静态-常量整型 初始化
Person(int aa):a(aa) // 这里必须对常量a初始化,也只能这样初始化。
{}
};
int main()
{
cout << Person::b << endl;
Person p(9);
cout << p.a << endl ;
return 0;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多