vector<int> v;
vector<int>::iterator a=v.begin();//这是什么??
c++中几时有这种语法,用一个类加上域的操作符去在没有实例化的类下的私有成员变量??
甚至于直接这样写都是正确的:
vector<int>::iterator a;//没有实例v,没有初始化??
为什么我自己写的代码,这样访问就是错的??
你想说明可以在类的定义中定义一个不是类的成员的变量,比如说这个怪胎iterator,并且可以用域操作符来访问它,能举个例子吗?这种情况可能吗?
追答vector::iterator是一个类型名(类名),不是变量名。
template >
class vector : public _GLIBCXX_STD_C::vector
{
public:
typedef typename _Base::reference reference;
typedef typename _Base::const_reference const_reference;
typedef __iterator_tracker iterator;
typedef __iterator_tracker const_iterator;
.....
}
template >
typename _Allocator = std::allocator 是什么意思啊,typename还可以这样用,而且这个赋值语句看上去也很离奇,这不会是stl的代码吧
这不就是像函数入口参数的默认值嘛。