我在 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/