声明具有相同名称的不同类的多个对象

时间:2016-08-18 15:13:03

标签: c++ scope declaration

我可以声明多个具有相同名称但在不同类中的对象吗?或者这会把一切都搞乱吗?让我包含一些代码来帮助理解我想要做的事情:

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;
}

请注意,这不一定是我使用的代码,只是一个例子。如果我需要详细说明,请告诉我。谢谢,全部!

1 个答案:

答案 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;

在这种情况下,对象的名称会隐藏类的名称。