const、static、const staic理解
Table of Contents
- 1 static的理解
- 2 const 新自定義類(lèi)型 p; 則p不可變
- 3 不可重入函數(shù)
- 4 類(lèi)的static成員變量
- 5 類(lèi)的const成員變量
- 6 類(lèi)的static const成員變量
1?static的理解
理解關(guān)于static變量,請(qǐng)選擇下面所有說(shuō)法正確的內(nèi)容:?
對(duì)于A(yíng),B:根據(jù)本篇概述部分的說(shuō)明b),我們知道,A,B都是正確的。?
對(duì)于C:根據(jù)本篇概述部分的說(shuō)明a),我們知道,C是正確的(所謂的函數(shù)重入問(wèn)題,下面會(huì)詳細(xì)闡述)。?
對(duì)于D:靜態(tài)變量放在程序的全局?jǐn)?shù)據(jù)區(qū),而不是在堆棧中分配,所以不可能導(dǎo)致堆棧溢出,D是錯(cuò)誤的。?
因此,答案是A、B、C。?
2?const 新自定義類(lèi)型 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; } 上面程序出錯(cuò)的原因const char* p1 = str; 其中p1是可變指針指向不可變的字符串。所以p1++正確。
typedef char* pchar; 定義了一種新類(lèi)型,所以 const pchar p2; p2是const類(lèi)型的,所以p2++出錯(cuò)。
3?不可重入函數(shù)
所謂可重入函數(shù)就是結(jié)果可預(yù)測(cè)(即只要輸入數(shù)據(jù)相同,輸出結(jié)果就相同)。
下面的函數(shù)就不是可重入函數(shù),因?yàn)閟tatic的緣故。
4?類(lèi)的static成員變量
class A { public:static int cnt;A(){cnt++;}static int how_many_instance(){return cnt;} }; int A::cnt = 0; //類(lèi)的static成員變量必須在類(lèi)外初始化,并且在加上其類(lèi)型和類(lèi)名:: int main() {cout<<A::how_many_instance()<<endl;A a, b, c, d;cout<<A::how_many_instance()<<endl;return 0; }5?類(lèi)的const成員變量
類(lèi)的const成員變量只能以初始化列表的形式初始化上面程序第一個(gè)報(bào)錯(cuò),因?yàn)轭?lèi)的const成員變量只能以初始化列表的形式初始化。
6?類(lèi)的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
轉(zhuǎn)載于:https://www.cnblogs.com/visayafan/archive/2011/08/18/2145076.html
總結(jié)
以上是生活随笔為你收集整理的const、static、const staic理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 统一沟通成本节约数据表
- 下一篇: VM与VPC共存(续)