文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C++ 一些小的TIPS

C++ 一些小的TIPS

时间:2009-08-12  来源:raymond1984

对string类型,一定要注意
size() and length()
返回的数值未必相等,如果我们使用了reserve()函数为string预留了一些空间,则length()返回的是预留的大小,而size()永远返回string内部真正的内容的长度,所以,我们要尽可能的使用size(),我看到有些文章上说length()是size()的同义词,他们总是返回同样的结果,经验证,在GCC3.x平台并不是如此,不过也许其他平台是这样的。也就是我们一定要注意这个问题。

类的友缘函数是有命名空间的,只有在同一个命名空间的友元函数才能访问同一个命名空间的类的内部似有变量。

比如
namespace test
{
class A
{
    public:

    private:
        int m;
        friend void print(A& a);
}
}
如果我这时候实现print函数为
vodi print(A& a)
{
    cout << a.m << endl;
}

这是不对的,因为print的命名空间和A不在一个,所以无法访问的,上面的代码编译会错误,提示就是
m is private, cann't access 等等,

error: `std::string ***' is private
****.cpp:284: error: within this context

这时候我们必须提供命名空间的支持才行,比如

void test::print(A& a)
{
    cout << a.m << endl;
}
这样就可以了,因为在同一个命名空间内部,当然,如果我们不将print的实现放在cpp文件中,而是直接放在h文件中的test命名空间内部,当然没有问题,但是这和我们手动添加命名空间的背后的道理是一样的,就是只有在同一个命名空间内部的友元函数才能该命名空间内部的类的内部私有变量。这个问题一定要记住。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载