何时使用指向类成员的指针

ZDNet软件频道 时间:2003-06-27 作者:ZDNet China |  我要评论(6)
本文关键词:cpptips
许多程序员都推荐你只要有可能就用引用来取代指针。然而,当你开发非算符类(non-functor class)类时,相对于引用,你会更喜欢使用指针。
本文译自Builder.com,未经许可请勿转载许多程序员都推荐你只要有可能就用引用来取代指针。例如,当函数通过引用(const或者非const型)来获取参数比实现用指针作为参数的同样功能的函数要简单许多。同样的还有读取函数——掌握它简单多了。

然而,当你开发非算符类(non-functor class)类时,相对于引用,你会更喜欢使用指针。当你面对使用引用成员变量还是指向成员变量的指针时,你一般选择指针。

如果你的类包含了一个或者一个以上引用,那么就无法为它实现一个默认构造函数。还有,编译器也无法实现默认的运算符“=”;如果你希望定义运算符“=”,你不得不采取某些技巧。由于你会经常碰到诸如“a=b”的情况,这就可能导致问题的出现。

请考虑下面的类:

structCTest
{
    int & m_n;
};

上面的代码不会编译成功,因为它不能产生默认的构造函数或者说初始化引用。我们把它修改成:

structCTest
{
    CTest( int & n)
        : m_n( n)
    {}
    int & m_n;
};

int main()
{
    inti;
    CTest a( i), b( i);
    //错误!由于*this,编译器不能产生默认运算符“=”,
    //你不能引用‘m_n’到
    //其它对象上

    a = b;
}


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134