1. 程式人生 > >const和static和static const

const和static和static const

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();
}