私有变量仅在类型内部可以访问,以前一直理解成只能同个实例访问自己内部的,原来只要类型相同就可以了
如下assign函数中,x.value,x是参数,虽然value是私有类型,但是在相同类型内部就都可以访问。
template <class T>
class MyClass
{
T value;
public:
MyClass(T t):value(t){}
void assign( MyClass<T> x)
{
value = x.value;
}
void disp()
{
cout<<value<<endl;
}
};
换成如下形式就出错。因为MyClass<T> MyClass<X>是不同的类型。
template <class T>
class MyClass
{
T value;
public:
MyClass(T t):value(t){}
template<class X>
void assign( MyClass<X> x)
{
value = x.value;
}
void disp()
{
cout<<value<<endl;
}
};