error LNK2001: 无法解析的外部符号 "public: static ......"
2016-01-05 10:54
309 查看
error LNK2001: 无法解析的外部符号 "public: static ......"
今天练习类的编程时遇到的问题,源自静态变量的初始化问题。下面是对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;
}
源自 :http://my.oschina.net/ypimgt/blog/89138
相关文章推荐
- C语言中static的作用及C语言中使用静态函数有何好处
- 从汇编看c++中函数里面的static关键字的使用说明
- C++的static关键字及变量存储位置总结
- PHP中new static() 和 new self() 的区别介绍
- C#静态static的用法实例分析
- static关键字的作用详解
- 浅谈C/C++中的static与extern关键字的使用详解
- C语言基础知识点解析(extern,static,typedef,const)
- c# static 静态数据成员
- 浅析php变量修饰符static的使用
- php面向对象全攻略 (十) final static const关键字的使用
- 从内存地址解析Java的static关键字的作用
- c语言中static的用法详细示例分析
- static全局变量与普通的全局变量的区别详细解析
- 深入理解C语言 static、extern与指针函数
- 关于C++中的static关键字的总结
- C#类中static变量用法分析
- C/C++中static,const,inline三种关键字详细总结
- php面向对象中static静态属性与方法的内存位置分析
- C++类中的static和const用法实例教程