C++类中的静态变量
来源:互联网 发布:php k图 编辑:程序博客网 时间:2024/06/05 01:05
可以通过以下几个例子更形象的说明这个问题:
//test.cpp
#include <stdio.h>
class A {
public:
static int a; //声明但未定义
};
int main() {
printf("%d", A::a);
return 0;
}
编译以上代码会出现“对‘A::a’未定义的引用”错误。这是因为静态成员变量a未定义,也就是还没有分配内存,显然是不可以访问的。
再看如下例子:
//test.cpp
#include <stdio.h>
class A {
public:
static int a; //声明但未定义
};
int A::a = 3; //定义了静态成员变量,同时初始化。也可以写"int A:a;",即不给初值,同样可以通过编译
int main() {
printf("%d", A::a);
return 0;
}
这样就对了,因为给a分配了内存,所以可以访问静态成员变量a了。
因为类中的静态成员变量仅仅是声明,暂时不需分配内存,所以我们甚至可以这样写代码:
//a.cpp
class B; //这里我们使用前置声明,完全不知道B是什么样子
class A {
public:
static B bb;//声明了一个类型为B的静态成员,在这里编译器并未给bb分配内存。
//因为仅仅是声明bb,所以编译器并不需要知道B是什么样子以及要给其对应的对象分配多大的空间。
//所以使用前置声明"class B"就可以保证编译通过。
};
类的析构函数什么时候会调用?
在这个对象的作用域最后..
比如你在main里面声明了一个类A..那么~A()会在main结束时调用..
如果在自定义的函数f()里面声明了一个A 函数f结束的时候就会调用~A()
或者你delete 指向A的指针..
或者显式的调用析构函数
阅读全文
0 0
- C中的静态变量
- [c++] c++ 类中的静态变量初始化
- [C++]类中的静态变量必须初始化
- Objective-C中的静态变量
- C语言中的静态变量
- c语言中的静态变量
- 类中的静态变量
- 类中的静态变量
- C语言中的静态变量和非静态变量
- C/C++中的静态变量和函数
- C++ 类中的静态变量
- C++ 类中的静态变量
- C++类中的静态变量
- C++/Java__中类模板中的静态成员变量和静态成员函数
- C语言中的静态变量和普通变量的区别
- 浅析c语言中的变量(局部变量,外部变量,静态变量,寄存器变量)
- c语言中的变量(局部变量,外部变量,静态变量,寄存器变量)
- c语言中的变量(局部变量,外部变量,静态变量,寄存器变量) .
- LeetCode:Assign Cookies
- POJ 2096 Collecting Bugs DP求数学期望 入门
- Centos7 搭配 LEMP(Nginx + MariaDB + PHP 7.1 + phpMyAdmin)
- 使用Servlet上传多张图片——前台页面层(Index.jsp)
- spring mvc原理
- C++类中的静态变量
- <设计模式可复用面向对象软件的基础> [2.3]、组合模式(C#)
- 使用Servlet上传多张图片——Servlet层(ProductServlet.java)
- 黑客-新手入门
- PAT乙级题1016.部分A+B
- Unity3d通过鼠标缩放查看和旋转物体
- 观察者模式
- 编译时缺少openssl/md5.h该怎么处理
- 递归与二叉树