关于c++访问权限的一点困惑
2013-07-10 12:59
239 查看
今天同学问我一个类似如余下的问题:
他问:(1)为什么那个copy构造函数不是如下的:Queue(const Queue<T> & q);为什么可以省掉模版类型参数T?(2)copy构造函数的实现中为什么可以访问变量q的私有成员age和name?
(1)对于第一个问题,其实如果没有定义为[b]Queue(const Queue<T> & q)形式,编译器也会把[b]Queue(const Queue & q)扩展为[b]Queue(const Queue<T> & q)形式,也就是说这两种效果是一样的。[/b][/b][/b]
[b][b][b](2)对于第二个问题我开始也一愣,跟他有同感,为什么可以访问变量q的私有成员了.[/b][/b][/b]
[b][b][b] 其实我们通常所说的public,private,protected是相对类而言的,而不是相对对象而言的。及自己类可以访问自己类的所有成员(包括私有的)。因为q属于Queue<T>类 所以它(copy构造函数)可以访问q的所有成员。[/b][/b][/b]
[b][/b]
[b][/b]
template<typename T> class Queue { public: Queue(int _age,string _name);//构造函数 Queue(const Queue & q); //copy构造函数 void print(); private: int age; string name; }; template <typename T> Queue<T>::Queue(int _age, std::string _name):age(_age),name(_name) { cout<<"Run Constructor"<<endl; } template <typename T> Queue<T>::Queue(const Queue & q) { this->age=q.age; this->name=q.name; } template <typename T> void Queue<T>::print() { cout<<"name:"<<this->name<<" ,age:"<<this->age<<endl; }
他问:(1)为什么那个copy构造函数不是如下的:Queue(const Queue<T> & q);为什么可以省掉模版类型参数T?(2)copy构造函数的实现中为什么可以访问变量q的私有成员age和name?
(1)对于第一个问题,其实如果没有定义为[b]Queue(const Queue<T> & q)形式,编译器也会把[b]Queue(const Queue & q)扩展为[b]Queue(const Queue<T> & q)形式,也就是说这两种效果是一样的。[/b][/b][/b]
[b][b][b](2)对于第二个问题我开始也一愣,跟他有同感,为什么可以访问变量q的私有成员了.[/b][/b][/b]
[b][b][b] 其实我们通常所说的public,private,protected是相对类而言的,而不是相对对象而言的。及自己类可以访问自己类的所有成员(包括私有的)。因为q属于Queue<T>类 所以它(copy构造函数)可以访问q的所有成员。[/b][/b][/b]
[b][/b]
class Test { public: void print(const Test & t) { cout<<t.num<<endl; } private: int num; };上面的定义也是正确的.
[b][/b]
相关文章推荐
- 对于C++中公有(public)、私有(private)、保护(protected),访问权限的一点总结
- 关于IIS及数据库访问权限的一点心得
- C++中关于public、protect、private的访问权限控制
- C++ 中关于默认构造函数的一点困惑
- 关于C++中私有继承后虚函数的访问权限与私有继承后多态的问题
- C++ 关于访问权限
- C++中关于public、protect、private的访问权限控制
- java中关于访问权限
- 关于C++一点小知识
- 关于MIUI悬浮窗权限问题的解决方案的一点补充
- C++访问权限
- 关于在applet中使用JDBC访问数据库的一点总结
- c++ 类成员的访问权限priavte, protected, public
- 小问题大困惑——无法访问,您可能没有权限使用网络资源
- C++ public protected private成员访问权限解读
- 关于springboot-actuator监控的401无权限访问
- ios关于相机访问权限设置
- c++继承方式及对基类的访问权限
- 关于用户角色权限的一点想法
- c++ 中继承方式权限转变 以及 恢复访问权限