我可以声明多个具有相同名称但在不同类中的对象吗?或者这会把一切都搞乱吗?让我包含一些代码来帮助理解我想要做的事情:
class get{
public:
string info(){
int str; cin >> str;
return str;
};
};
class store{
public:
string data;
}
int main(){
get foo;
store foo;
foo.data = foo.info();
cout << foo.data;
return 0;
}
请注意,这不一定是我使用的代码,只是一个例子。如果我需要详细说明,请告诉我。谢谢,全部!
答案 0 :(得分:2)
您不能在同一范围内声明两个具有相同名称的对象。编译器将发出错误。
但是,例如此代码有效
#include <iostream>
#include <string>
class get
{
public:
std::string info() const
{
std::string str;
std::cin >> str;
return str;
}
};
class store
{
public:
std::string data;
};
store foo;
int main()
{
get foo;
::foo.data = foo.info();
std::cout << ::foo.data << std::endl;
return 0;
}
因为两个具有相同名称的对象在不同的范围内定义,并且使用了限定名称。
此外,您可以声明一个对象名称与同一作用域中的类名称相同。例如
store store;
在这种情况下,对象的名称会隐藏类的名称。