C++中的protected

  “ ... Mark Linton 顺便到我的办公室来了一下,提出了一个使人印象深刻的请求,要求提供第三个控制层次,以便能支持斯坦福大学正在开发的 Interviews 库中所使用的风格。我们一起揣测,创造出单词 protected 以表示类里的一些成员,...”

  “... Mark 是 Interviews 的主要设计师。他的有说服力的争辩是基于实际经验和来自真实代码的实例。...”

  “...大约五年之后,Mark 在 Interviews 里禁止了 protected 数据成员,因为它们已经变成许多程序错误的根源...”

  我不喜欢 protected ,但是今天,我偶尔用一下 C++ 时,不再有那么多洁癖。反正很难用 C++ 做出稳定的设计,那么,爱怎么用就怎么用吧。关键是别用 C++ 做特别核心的东西就成了。

  今天,碰到一个跟 protected 有关的问题,小郁闷了一下。觉得可以写写。这个倒是个基本问题,貌似以前很熟悉。毕竟很多年不碰了,对 C++ 语法有点生疏。

  小时候,我一度以为这样的代码是不合法的。


  因为我担心在 foo::foobar 中不能访问 f 的私有成员变量 a。

  后来我明白了,所谓私有,是针对类的,而不是具体的对象。

  但是今天碰到另一个问题,让我愣了一下。


  这次,在 foobar::bar 里,访问 this 的 a 成员允许,但 f 的 a 成员却被禁止了。

  因为 foo::a 对 foobar 是 protected 的,foobar 的成员函数可以访问自己的 a ,但是对于 foo 指针,就禁止了。

  想了一下,解决方案是。


  很坏味道。不过也不太所谓了。

时间: 2024-09-17 04:50:25

C++中的protected的相关文章

Android中我继承了View,为什么访问不了View中的protected属性,例如Scrollx什么的~

问题描述 Android中我继承了View,为什么访问不了View中的protected属性,例如Scrollx什么的~ 问题补充:renpeng301 写道 解决方案 BubbleTextView.Java 这个文件出错么?调试launcher的文章[url]http://gqdy365.iteye.com/blog/763543[/url]解决方案二:引用主要我是从code.google上下的系统Launcher的源代码~那我怎么才能把它弄好~~ 用Scrollx的get方法.解决方案三:查

java中的protected

protected(受到保护的)访问指示符要求大家提前有所认识.首先应注意这样一个事实:为继续学习本书一直到继承那一章之前的内容,并不一定需要先理解本小节的内容.但为了保持内容的完整,这儿仍然要对此进行简要说明,并提供相关的例子. protected关键字为我们引入了一种名为"继承"的概念,它以现有的类为基础,并在其中加入新的成员,同时不会对现有的类产生影响--我们将这种现有的类称为"基础类"或者"基本类"(Base Class).亦可改变那个类

java 中protected modifier 使用总结

1. protected 访问控制符能被用于方法和成员变量.    2. 声明为protected的方法和成员变量能被同一个包里的所有类所访问,就像默认修饰符package一样.    3. 能被该类的子类所访问,子类可以和父类不在一个包中.    这样,当你想让一个类中的某个方法或成员变量在包中都可见,而且其子类也能访问(子类有可能和父类不在同一个包中)但又不想让所有类都可以访问该类时,就可以用protected修饰符.    可访问性:    public > protected > pa

php class中public,private,protected的区别,以及实例

一,public,private,protected的区别 public:权限是最大的,可以内部调用,实例调用等. protected: 受保护类型,用于本类和继承类调用. private: 私有类型,只有在本类中使用. 二,实例 Java代码   <?php   error_reporting(E_ALL);      class test{    public $public;    private $private;    protected $protected;    static $

C++中public、protected及private用法

转自:http://www.jb51.net/article/54224.htm 初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂.今天本文就来十分分析一下C++中public.protected及private用法.相信对于大家深入掌握C++程序设计会有很大的帮助. 这里我们首先要明白下面几点. 1.类的一个特征就是封装,public和private作用就是实现这一目的.所以: 用户代码(类外)可以访问public成

php class中public,private,protected的区别以及实例分析_php技巧

一,public,private,protected的区别public:权限是最大的,可以内部调用,实例调用等.protected: 受保护类型,用于本类和继承类调用.private: 私有类型,只有在本类中使用. 二,实例 复制代码 代码如下: <?phperror_reporting(E_ALL);class test{ public $public; private $private; protected $protected; static $instance; public  func

深入理解C++中public、protected及private用法_C 语言

初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂.今天本文就来十分分析一下C++中public.protected及private用法.相信对于大家深入掌握C++程序设计会有很大的帮助. 这里我们首先要明白下面几点. 1.类的一个特征就是封装,public和private作用就是实现这一目的.所以: 用户代码(类外)可以访问public成员而不能访问private成员:private成员只能由类成员(类内)和友元访问.

java中包容易出现的错误及权限问题

/* 3,权限在不同地方的体现:                 public   protected       default     private 同一类中:       ok       ok            ok         ok 同一包中:       ok       ok               ok 子类中:         ok       ok      不同包中:       ok   在同一包中子类中是可以访问父类中默认权限(default)的方法,但是

Spring2.0中新的Bean类型实现原理

我们知道,在Spring2.0中,除了singleton及prototype两种类型的Bean以外.默认情况下还增加了request.session及global session三种类型的Bean,增加的三种类型的Bean主要应用于Web应用程序中.本文不打算分析三种类型的Bean的用法,只是简单分析框架的实现原理. Spring2.0中新增了一个用来表示Bean范围的Scope接口 public interface Scope { Object get(String name, ObjectF