【问题标题】:Base and derved class c++11基类和派生类 c++11
【发布时间】:2017-11-16 15:24:47
【问题描述】:

我有基类Aclass 和派生类Bclass。如果我创建对象Bclass b 并且如果我写A &aref(b) 是&aref 现在是A 类还是B 类的对象?

【问题讨论】:

  • 引用是引用而不是对象。
  • 但是参考什么?
  • 无论你指向什么,在这种情况下都是 b。没有复制。引用就像是一个功能有限的指针,并且增加了一些(但不多)安全性。按照惯例,引用用作在作为参数传递时不应为 null 的指针(即使可以使其为 null),或者用于保存指向已知良好对象的指针以使代码更具可读性,同时避免复制。

标签: class c++11 reference derived-class base-class


【解决方案1】:

&aref 现在是 A 类或 B 类的对象?

&aref 的意思有点模棱两可。不管怎么解释,它既不是A的对象,也不是B的对象。

aref 是一个变量。变量的类型是reference。它不是一个对象。更具体地说,它是对类型A 的引用。但是,它引用了 B 类型的对象。

另一方面,

&aref 是使用地址运算符 (&) 的表达式。这个表达式的类型是指针,值是aref引用的对象的地址。


从技术上讲,aref 实际上直接指的是 A 类型的对象,它是 B 类型的对象的父子对象。但从面向对象的角度来看,没有区别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 2016-10-17
    • 2015-06-28
    • 2016-02-08
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多