首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请教以上的语法是c++的么?在什么书中可以查到

2013-01-06 
请问以下的语法是c++的么?在什么书中可以查到?请各位大大帮忙看看以下代码的语法,replacements,tagsInUse,

请问以下的语法是c++的么?在什么书中可以查到?
请各位大大帮忙看看以下代码的语法,
replacements,tagsInUse,……,occupancies这些对象怎么这样子初始化啊,请问这样的方式是c++的语法么?
在哪本书上看到过么?
小弟不才,望各位大大多多指教!!!

================================================
//base.cc
void
BaseTags::regStats(const string &name)
{
    using namespace Stats;
    replacements
        .init(maxThreadsPerCPU)
        .name(name + ".replacements")
        .desc("number of replacements")
        .flags(total)
        ;

    tagsInUse
        .name(name + ".tagsinuse")
        .desc("Cycle average of tags in use")
        ;

    totalRefs
        .name(name + ".total_refs")
        .desc("Total number of references to valid blocks.")
        ;

    sampledRefs
        .name(name + ".sampled_refs")
        .desc("Sample count of references to valid blocks.")
        ;

    avgRefs
        .name(name + ".avg_refs")
        .desc("Average number of references to valid blocks.")
        ;

    avgRefs = totalRefs/sampledRefs;

    warmupCycle
        .name(name + ".warmup_cycle")
        .desc("Cycle when the warmup percentage was hit.")
        ;

    occupancies
        .init(cache->system->maxMasters())
        .name(name + ".occ_blocks")
        .desc("Average occupied blocks per requestor")
        .flags(nozero | nonan)
        ;
    for (int i = 0; i < cache->system->maxMasters(); i++) {
        occupancies.subname(i, cache->system->getMasterName(i));
    }

    avgOccs
        .name(name + ".occ_percent")
        .desc("Average percentage of cache occupancy")
        .flags(nozero | total)
        ;
    for (int i = 0; i < cache->system->maxMasters(); i++) {
        avgOccs.subname(i, cache->system->getMasterName(i));
    }

    avgOccs = occupancies / Stats::constant(numBlocks);



    registerExitCallback(new BaseTagsCallback(this));
}
====================================================================
/*replacements,tagsInUse,……,occupancies这些对象定义在
   base.hh   中
*/

    Stats::Vector replacements;
====================================================================
//在"namespace Stats"中有以下定义
class Vector : public VectorBase<Vector, StatStor>
{
};

class VectorBase : public DataWrapVec<Derived, VectorInfoProxy>
{
……
};

class DataWrapVec : public DataWrap<Derived, InfoProxyType>
{
……
};

template <class Derived, template <class> class InfoProxyType>
class DataWrap : public InfoAccess
{
  ……
  public:

    Derived &
    name(const std::string &name)
    {
        Info *info = this->info();
        info->setName(name);
        info->flags.set(display);
        return this->self();
    }
    const std::string &name() const { return this->info()->name; }

    Derived &
    desc(const std::string &_desc)
    {
        this->info()->desc = _desc;
        return this->self();
    }
};

====================================================================

这些代码使用python和c++写的,通过swig集成在一起的,以上部分我没见到python的部分,
1、请问像
tagsInUse
        .name(name + ".tagsinuse")
        .desc("Cycle average of tags in use")
        ;
这样子是纯c++的代码初始化的方式么?
2、如果是的,我怎么在c++语法书上没有看到过,请问你在何处见到过?

万分感谢
[解决办法]
就是普通的 对象调用成员函数,没啥特别的。
lz单步跟踪下就知道咋回事
[解决办法]

int main(int argc, char *argv[]) {
char c;
char a[2];
cin
.get(c)
.getline(a,sizeof(a))
.read(a,sizeof(a))
;
}

[解决办法]
Derived &
    name(const std::string &name)

類似的成員函數都
return this->self();

。。。很容易理解啊。

寫成這樣子,還是很清晰簡潔的,也很好理解,不錯的風格。
    replacements
        .init(maxThreadsPerCPU)
        .name(name + ".replacements")
        .desc("number of replacements")
        .flags(total)
        ;

热点排行
Bad Request.