【发布时间】:2015-12-03 09:11:54
【问题描述】:
假设你有这个非常愚蠢的代码(只是为了方便提出即将到来的问题):
#include <iostream>
class A
{
public:
A() : m(0) {}
void showM1( int m )
{
std::cout << m << std::endl;
}
void showM2()
{
int m = 5;
std::cout << m << std::endl;
}
int m;
};
int main()
{
A a;
a.showM1( 5 );
a.showM2();
}
When I tested,不出意外,它显示的是 5 和 5。 但这真的是确定性的吗? 是否总是优先考虑局部变量(或方法参数)和对象属性?
我问这个问题是因为我们在一个大型项目中重命名了一些变量,只是想确保行为没有“被低估”并且可能因平台、编译器而异......
PS:我知道这是不好的做法,发现主题提到最好的方法是避免名称冲突(例如 this one)....
【问题讨论】:
标签: c++