static成员变量
不能在类声明中初始化,要在方法文件中初始化,参考:关于C++类的静态成员变量
const成员变量
由于是const类型一定要在创建的时候初始化,因此在成员初始化列表中进行初始化,参考:C++类构造函数的特殊初始化成员函数的语法
const static 成员变量
负负得正,“干脆就在类声明中初始化了吧”C++编译器如是说。
不能在类声明中初始化,要在方法文件中初始化,参考:关于C++类的静态成员变量
由于是const类型一定要在创建的时候初始化,因此在成员初始化列表中进行初始化,参考:C++类构造函数的特殊初始化成员函数的语法
负负得正,“干脆就在类声明中初始化了吧”C++编译器如是说。
关于C++中的派生类和基类的关系就总结下来就是:
private
成员是不能够被派生类直接访问的,需要通过基类的共有方法来访问,protected
数据是可以向public数据一样被派生类通过名称空间解析运算符::
来访问。先上个例子:1
2
3
4
5
6
7
8
9
10
11
12
13
14class Quene {
private:
int items;
const int qsize; // 私有数据成员是常量
...
};
// 构造函数
Quene::Quene(int qs)
{
...
qsize = qs; // !! NOT ALLOWED !!
...
}
为什么不允许?
首先类声明是不分配内存的,也就是说不能在类定义中进行变量初始化(静态常量除外,当然C++11已经支持在类声明中进行变量初始化了)。
程序接着执行,进行对象的创建:
{}
中的代码),还未对数据进行初始化new
运算符负责在堆中(heap)中找到足以能够满足要求的内存块。
定位(placement)new
运算符是new
运算符的变体,能够指定要使用的位置。可以使用这种特性来设置其内存管理规程,处理需要通过特定地址访问的硬件或在特定位置创建对象。
在动力学蒙特卡洛kMC模拟中,因为组态变化的时间间隔很长,体系完成的连续两次演化是独立的,无记忆的,所以这个过程是一种典型的马尔可夫过程(Markov process)。
下面先定义下符号:
体系的时间演变通过Markov master equation来描述
$$ \bar{p}_{u}(t) = \sum_{v}^{}{\omega_{u v}p_{v}(t) - \omega_{v u}p_{u}(t)} $$
其中${p}_{u}(t)$是体系在时间$t$处在$u$的概率。