我是 C++ 的新手,从 Java 迁移过来并想知道这一点:
pos = result.find(remove[i]);
if (pos == string::npos)
它是在调用字符串“超类”吗?如果它调用类本身来访问常量“npos”,我很困惑,如果我在函数中声明了几个字符串变量,它怎么知道它是类的哪个实例?
npos
不绑定到实例,而是绑定到类本身。是static
会员。Java中也有static
成员。
[...]
namespace std {
template<class charT, class traits = char_traits<charT>,
class Allocator = allocator<charT> >
class basic_string {
public:
//...
static const size_type npos = -1;
//...
};
std::string
是 的一个专业。basic_string
npos
是字符串的静态成员。
C++ 中的静态成员为每个程序创建一次,并由同一类的所有实例共享。而且无需实例化类也可以访问。