const和static和static const
阿新 • • 發佈:2019-02-12
const資料成員存活在物件中,類可以建立不同 的物件,每個物件的const資料成員值可以不同,通過建構函式初始化
static資料成員作用域是整個類,類建立的不同的物件共享同一個static資料成員,不能通過建構函式初始化,因為他屬於類,不屬於物件。在類定義檔案初始化。
static const和const static一樣,建立整個類都恆定的常量
#ifndef _HEADER_H_ #define _HEADER_H_ class Base { public: Base(int bb); void print(); private: static int aa; //靜態成員變數,不能在類內部定義,不能使用建構函式初始化。 const int bb = 20; //常量成員變數,只能通過建構函式初始化,VS2013居然編譯通過。 static const int cc = 10; //可以在類內部定義,與const static int cc = 10相同 }; #endif
#include "Header.h" #include <stdio.h> #include <iostream> Base::Base(int bb) :bb(bb) { aa++; } void Base::print() { std::cout << "aa = " << aa << std::endl; std::cout << "bb = " << bb << std::endl; std::cout << "cc = " << cc << std::endl; } int Base::aa = 100; //const int Base::cc = 222; //或者在這裡初始化
#include <stdio.h>
#include <iostream>
#include "Header.h"
int main()
{
Base test(10);
test.print();
Base test1(13);
test1.print();
}