template<class T,class Ref,class Ptr>
struct Iterator
{
typedef Iterator<T,Ref,Ptr> Self;
typedef Iterator<T, T*, T&>iterator;
Iterator(T a)
:_a(a)
{
printf("构造函数");
}
Iterator( iterator& it)
:_a(it._a)
{
printf("拷贝构造函数");
}
T _a=0;
};
template<class T>
class A
{public:
typedef Iterator<T,T*,T&> iterator;
typedef Iterator<T,const T*,const T&> const_iterator;
A(T a)
:_a(a)
{
}
const_iterator func()
{
const_iterator cit(_a);
return cit;
}
iterator _a;
};
void test()
{
// 表示普通迭代器
A<int> a(1);
auto const_it = a.func();
}
class 中的 const method 相当于 const this ,在函数中不能修改变量,调用的也只能是类的const的方法。
const iterator 是用于给const对象调用的,而且调用的是底层的类的对应的const的方法。
const vector<node*> v1 v1上的各个值node*地址不变就好,node*指向的空间的变量改变不影响