这儿的冒号是啥意思? 还有这个模版.该如何处理

这儿的冒号是啥意思? 还有这个模版...
C/C++ code


enum NodeType { BranchNode, AggregateNode, LeafNode };

    class Node
    {
    public:
        NodeType type() const;

    protected:
        Node( NodeType type );
        ~Node() {};

    private:
        NodeType type_ : 2;//为什么用冒号? 是什么意思?
    };



还有这个模版里面直接赋值,是不是之后的AS的值一直是 1 ?
C/C++ code

template< typename T, int AS = 1 >
class Octree
{
 ...
}



------解决方案--------------------
位域。。
------解决方案--------------------
第二个只是说默认值为1啊。

------解决方案--------------------
AS = 1
就像函数的默认参数一样,不提供则为1,提供则为你提供的值。
------解决方案--------------------
NodeType type_ 这是个枚举类型的对象,这个枚举类型里面包含三个元素,
:2表示LeafNode。
------解决方案--------------------

就是 type_ 只有2位(0-3)的意思。