c++ - Header实现变量重定义不显示错误

标签 c++ ios

我在 iOS 开发 (Xcode) 中使用仅 C++ header 类。

在 A.hpp 中

class A {
    public:

        A() {
            B b;
        }

        void run() {
            b.run();
        }

    private:

        B b;
}

B 是在科学计算库中定义的,b.run() 预计会花费大量时间。

在 ViewController.mm 中(或将其视为 main.cpp)

A* a = new A(); a->run();

工作正常(通常我期望变量重新定义会出现一些错误,这里 b 被定义了两次)但是比预期花费了两倍多的时间。

A() 中删除 B b; 后,一切正常。

我想知道这个奇怪的事情是否是由于两次调用 b.run() 而导致的,编译器实际上将两个定义视为单独的初始化并分别调用它们运行。但是为什么编译器没有发现这么严重的错误呢?

最佳答案

定义一个与成员变量同名的局部变量是有效的。这将简单地隐藏该范围内的成员变量(您仍然可以通过 this->b 访问它)。

关于c++ - Header实现变量重定义不显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36420338/

相关文章:

c++ - 不安全、超快的跨进程内存缓冲区?

c++ - 您如何使用迭代器查看多个值?

尽管有 Default-568h@2x.png,iPhone 5 应用程序仍无法以全分辨率启动

objective-c - 在 UIView 中实现 ZBar 二维码阅读器

ios - UILabel 调整大小不起作用

ios - 使用滑动手势关闭 View Controller 时的自定义动画

ios - 安排通知在特定时间触发 - Swift

c++ - 寻找一种安全、便携的密码存储方法

c++ - 创建具有构造函数的单例类,该构造函数接受运行时评估的参数

c++ - 裁剪程序每次循环openCV绘制两个矩形