C++ 类中的typedef类型名要特殊处理

来源:互联网 发布:sql 查询字段默认值 编辑:程序博客网 时间:2024/05/10 11:53

    一般来说,内层作用域可以重新定义外层作用域中的名字,即使该名字已经在内层作用域中使用过。然而在类中,如果成员使用了外层作用域中的某个名字,而该名字代表一种类型,则类不能在之后重新定义该名字。

    typedef double Money;

    class Account {

    public:

        Money balance() { return bal; } //使用外层作用域的Money

    private:

        typedef double Money;  //错误:不能重新定义Money

        Money bal;

        //...

    };

    需要特别注意的是,即使Account中定义的Money类型与外层作用域一致,上述代码仍然是错误的。

    尽管重新定义类型名字是一种错误的行为,但是编译器并不对此负责。一些编译器仍将顺利通过这样的代码,而忽略代码有错的实事。

0 0
原创粉丝点击