请看以下代码:
类A类B不使用类模板
#include <bits/stdc++.h>
using namespace std;
class A{
private:
int a1;
};
class B{
private:
A *a2;
};
void copy(const B &b1)
{
A *a3=b1.a2;
}
int main(void) {
return 0;
}
编译失败,提示:[Error] 'A* B::a2' is private
类A类B使用类模板
#include <bits/stdc++.h>
using namespace std;
template <class T>
class A{
private:
T a1;
};
template <class T>
class B{
private:
A<T> *a2;
};
template <class T>
void copy(const B<T> &b1)
{
A<T> *a3=b1.a2;
}
int main(void) {
return 0;
}
编译正常,可执行。
为什么类B的私有成员访问权限改变了?