通过引用const函数来调用另一个类的非const函数

寻求

想象下面的例子:

class A
{
public:
    void doSomeStuff() { std::cout << "SomeStuff" << std::endl; }
};

class B
{
public:
    B(A& a) : a(a) {}
    void constStuff() const { a.doSomeStuff(); }

private:
    A &a;
};

如果doSomeStuff()要更改数据,那也不会产生影响class B吗?为什么允许这种行为?

讲故事的人-Unslander Monica

如果doSomeStuff()会更改数据,那也不会影响B类吗?

好吧,不是以编译器检查const正确性的方式。B持有参考A该对象可以驻留在任何位置,但最重要的是它不驻留在B对象内部因此,对其进行修改不会带来诸如更改const对象之类的未定义行为。我们有对非常量对象的引用,因此可以通过引用来修改对象。就对象是否物理上而言,这是C ++类型系统所关心的

它可能会影响的逻辑状态B,但确保类不变量成立是程序员的责任。C ++不会帮助您。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

非const字段在函数中很好,但在另一个函数中被视为const

调用另一个函数来清理数组

ByteBuddy 如何使用构造函数调用类中的另一个构造函数来创建类?

从另一个函数中调用类函数

如何通过引用传递另一个类的函数内的枚举类?

PHP - 从另一个类调用类函数

无效使用非静态成员函数-类成员函数调用另一个类成员函数

在Kivy中引用另一个类的函数

通过引用另一个类的构造函数传递对象时出错

为什么不允许将右值引用绑定到非const引用,但是却可以在一个对象上调用非const成员函数

PHP如何从另一个类调用函数?

从另一个类调用函数(反应)

从另一个函数存根类调用

从另一个类调用函数?安卓

从另一个类迅速调用函数

如何从另一个类调用函数

从Kivy中的另一个类调用函数

在Swift中从另一个类调用函数

Python-从另一个类调用函数

如何从另一个类调用函数?

从另一个类调用函数?

从另一个 kotlin 类调用函数

从另一个 Flutter 类调用函数

C ++-从另一个类构造函数调用一个类构造函数

如何通过另一个类的图形对象调用函数?

在AngularJS中,如何获得一个工厂函数来引用另一个工厂函数?

使用类的构造函数来初始化另一个类

如何使用cfc对象的引用从另一个函数调用一个函数?

在Swift中是否可以将一个函数作为另一个函数的参数来调用?