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共存(续)