const、static、const staic理解
生活随笔
收集整理的这篇文章主要介绍了
const、static、const staic理解
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
Table of Contents
- 1 static的理解
- 2 const 新自定义类型 p; 则p不可变
- 3 不可重入函数
- 4 类的static成员变量
- 5 类的const成员变量
- 6 类的static const成员变量
1 static的理解
理解关于static变量,请选择下面所有说法正确的内容:
对于A,B:根据本篇概述部分的说明b),我们知道,A,B都是正确的。
对于C:根据本篇概述部分的说明a),我们知道,C是正确的(所谓的函数重入问题,下面会详细阐述)。
对于D:静态变量放在程序的全局数据区,而不是在堆栈中分配,所以不可能导致堆栈溢出,D是错误的。
因此,答案是A、B、C。
2 const 新自定义类型 p; 则p不可变
#include <iostream> using namespace std; typedef char* pchar; int main() {char str[10] = "abcdef";const char* p1 = str;const pchar p2 = str;p1++;p2++;return 0; } 上面程序出错的原因const char* p1 = str; 其中p1是可变指针指向不可变的字符串。所以p1++正确。
typedef char* pchar; 定义了一种新类型,所以 const pchar p2; p2是const类型的,所以p2++出错。
3 不可重入函数
所谓可重入函数就是结果可预测(即只要输入数据相同,输出结果就相同)。
下面的函数就不是可重入函数,因为static的缘故。
4 类的static成员变量
class A { public:static int cnt;A(){cnt++;}static int how_many_instance(){return cnt;} }; int A::cnt = 0; //类的static成员变量必须在类外初始化,并且在加上其类型和类名:: int main() {cout<<A::how_many_instance()<<endl;A a, b, c, d;cout<<A::how_many_instance()<<endl;return 0; }5 类的const成员变量
类的const成员变量只能以初始化列表的形式初始化上面程序第一个报错,因为类的const成员变量只能以初始化列表的形式初始化。
6 类的static const成员变量
static const变量与static变量初始化方式一样static const变量与static变量初始化方式一样,只是前者在变量名前加上const。
Date: 2011-08-18 21:51:58
HTML generated by org-mode 6.33x in emacs 23
转载于:https://www.cnblogs.com/visayafan/archive/2011/08/18/2145076.html
总结
以上是生活随笔为你收集整理的const、static、const staic理解的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 统一沟通成本节约数据表
- 下一篇: VM与VPC共存(续)