c++学习笔记--protected成员
2010-12-02 09:39
155 查看
class Actor
{
string _name;
bool _gender;
public:
......
}
class Monk:public Actor
{
public:
patter();
}
void Monk::patter()
{
cout<<_name<<":_......"<<endl;
}
这样的代码,编译器会报错,error:“Actor::_name”:无法访问private成员
现在问题产生了:我们希望在Monk类中访问到基类的成员。但是又不希望该成员对外公开?
c++为此提供了protected关键字,该保护类型成员的含义是:该类的派生类可以使用该类型的成员,但对外来说,他还是私有的。所以对于设计类的时候,就要考虑:如果该类会被继承,那么其可能被派生类访问的成员需要声明为protected类型!
上列中,class Actor可以这样写:
class Actor
{
protected:
string _name;
bool _gender;
public:
......
}
这样的话,在MonK::patter中访问_name就不会出错
但是类的对象依然是不能访问protected的成员的
Monk tang;
tang._name="唐三藏";
error:“Actor::_name”:无法访问protected成员
{
string _name;
bool _gender;
public:
......
}
class Monk:public Actor
{
public:
patter();
}
void Monk::patter()
{
cout<<_name<<":_......"<<endl;
}
这样的代码,编译器会报错,error:“Actor::_name”:无法访问private成员
现在问题产生了:我们希望在Monk类中访问到基类的成员。但是又不希望该成员对外公开?
c++为此提供了protected关键字,该保护类型成员的含义是:该类的派生类可以使用该类型的成员,但对外来说,他还是私有的。所以对于设计类的时候,就要考虑:如果该类会被继承,那么其可能被派生类访问的成员需要声明为protected类型!
上列中,class Actor可以这样写:
class Actor
{
protected:
string _name;
bool _gender;
public:
......
}
这样的话,在MonK::patter中访问_name就不会出错
但是类的对象依然是不能访问protected的成员的
Monk tang;
tang._name="唐三藏";
error:“Actor::_name”:无法访问protected成员
相关文章推荐
- c++学习笔记(8.类的静态成员)
- NDK开发学习笔记—C/C++访问java成员
- [C++学习笔记]--析构函数、静态成员变量、静态成员函数
- [C++学习笔记]--常量对象、常量成员函数和常引用
- c++学习笔记--带有动态空间申请的类成员变量的类的运算符重载
- c++学习笔记之成员模板
- 【C++ 学习笔记】 static成员:static 变量和static函数
- C/C++学习笔记:指向类成员变量的指针
- C++面向对象—成员函数与成员变量的实现机制学习笔记(1)
- JNI学习笔记:C++代码访问Java类中的成员和方法
- 【C++】学习笔记草稿版系列9(指向类成员的指针)
- C++学习笔记12:类成员初始化等问题
- C++ 学习笔记之二:类成员变量的初始化
- C++学习笔记二十二-类成员的指针
- C++学习笔记17,构造函数体内初始化数据成员与构造函数初始化器的区别(一)
- 【C++学习笔记】使用控制符及流对象的成员函数控制输出格式
- C++学习笔记(十一):成员访问运算符(点运算和箭头运算)
- 成员函数声明为常量的解释--C++学习笔记
- C/C++ 学习笔记:结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法
- C++数据的封装和类体内定义成员函数的学习笔记