:: 与 .成员函数(C++)

Dav*_*rts 0 c++ oop

我知道,给定一个类,比如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)

Mat*_*son 6

now()是一个static成员函数.这意味着函数本身没有隐藏this指针.相反,它就像一个常规函数 - 只是避免名称冲突的类的一部分.

(在您的示例中,这high_resolution_clock是一个类,chrono是一个名称空间.两者都用于::表示"我想要来自{namespace,class}内部的东西"