这不是取私有变量吗?
下列程序在VC++中编译为何可以通过
template <class T>
class MyClass{
private:
T value;
public:
void assign(const MyClass<T>& x)
{value=x.value;} //这不是取x的私有变量吗,怎么可以通过?
};
void main()
{
MyClass<double> d;
MyClass<double> e;
e.assign(d);
}
问题点数:20、回复次数:6Top
1 楼handsomerun(毛毛)回复于 2005-08-04 10:51:07 得分 0
所谓的私有是对外不对内的
你的类成员函数,可以调用自己类的私有成员
像你的示例代码那样
但是MyClass<double> d;
d.value;
这样就是不行的,呵呵Top
2 楼guoxiaoli(半导体)回复于 2005-08-04 10:57:57 得分 0
private部分是针对类定义的外部而言的!!
要不然岂不是private部分为不可用的部分了!!
Top
3 楼boyplayee()回复于 2005-08-04 12:47:43 得分 0
类的私有部分对本身类来说是可以读的Top
4 楼kuboybat(保镖)回复于 2005-08-04 13:11:01 得分 0
私有针对本类和别的类来说,类A的私有变量它自己本身可以使用,但是类B就不能使用类A的私有成员变量,呵呵,如果自己类的私有成员变量自己不能使用的话,那还要来干嘛:)Top
5 楼hyg2008(蓝色雨)回复于 2005-08-04 13:13:47 得分 0
虽然e和d都属于一个类,但是是不同的对象。
e的成员函数为什么能去取d的私有成员变量,应该只有d自己的成员函数才能取d的私有成员变量吧?Top
6 楼bobob(静思)回复于 2005-08-04 13:33:23 得分 0
楼主不要写成内联试试看?
我也觉得应该不能访问,因为是不同的对象
莫非是编译器的bug?hoho ~
Top




