标签:style io ar color os 使用 sp on div
?
分为友元类和友元函数
?
突然想到static 、 const 、 static const 以及它们的初始化
Const 定义的常量超出其作用域会被释放掉,而static 定义的静态常量在函数直线后不会释放其存储空间。
对于各自的初始化规则如下:
而无法修改const static 静态常量的值。
?
注意:要想在类中建立恒定不变的值,除了用const static外,还可以用enum 枚举实现。
?
举例如下:
// BlankTest.cpp : 定义控制台应用程序的入口点。
//
// const 、 static 、 const static 、 enum 之间的区别与联系
#include "stdafx.h"
#include <iostream>
using namespace std;
?
class myclass
{
????const int m;
public:????static int n;
????const static int mn;
????enum
????{
????????size1 = 50, //枚举变量中没有 ;冒号,只有 , 逗号。
????????size2 = 60
????};
public: //若不加public,则编译错误。友元类无法访问私有成员。
????static void print();
????const void print2();
?
myclass(int a);
};
?
int myclass::n = 10; //静态成员的定义+初始化
const int myclass::mn = 20;
?
myclass::myclass(int a):m(a) //用a 来初始化const成员,此处可以直接写一个 数字,比如10,都是没有问题的。
{
????n += 1;//说明 我们在构造函数里面可以对static变量进行更改
}
?
?
void myclass::print()
{
????cout << "count= " << mn << endl;
}
?
const void myclass::print2()
{
????//m = 20; //错误,错误提示:表达式必须是可修改的左值。
????cout << "const = " << m << endl;
????cout << "static = " << n << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
????myclass a(10);
????a.print();//通过对象访问静态成员函数
????myclass::print();//通过类访问静态成员函数
?
????a.print2();
????a.n += 1; //static 变量是可以更改的。而static const 变量是不可更改的。
????a.print2();
?
????cout <<"enum = "<< a.size1 << endl;
????//a.mn += 1;//error,静态常量无法修改左值。
????return 0;
}
标签:style io ar color os 使用 sp on div
原文地址:http://www.cnblogs.com/zhuxuekui/p/4133314.html