我知道,给定一个类,比如std :: array,它有一个成员函数,比如size(),我们可以通过"."调用该成员函数,也就是说,在下面的代码中,
array<int,5> myarray;
int s=myarray.size();
Run Code Online (Sandbox Code Playgroud)
s将是表示myarray大小的整数.当成员函数也可以由命名空间运算符"::"调用时,会发生棘手的事情.例如,我知道以下代码行是有效的:
auto t=chrono::high_resolution_clock::now();
Run Code Online (Sandbox Code Playgroud)
然后,使用我们最初用于数组的语法有什么问题?
chrono::high_resolution_clock myclock;
auto t=myclock.now();
Run Code Online (Sandbox Code Playgroud)
now()是一个static成员函数.这意味着函数本身没有隐藏this指针.相反,它就像一个常规函数 - 只是避免名称冲突的类的一部分.
(在您的示例中,这high_resolution_clock是一个类,chrono是一个名称空间.两者都用于::表示"我想要来自{namespace,class}内部的东西"