【发布时间】:2010-02-25 02:27:07
【问题描述】:
我在看the following text from Stanford's Programming Paradigms class,注意到作者在使用string类的时候,构造函数做了一个类似这样的函数调用:
string::string(const char* str) {
initializeFrom(str, str + strlen(str));
}
如果 initializeFrom 函数接受两个 char* 参数,那么第二个参数为什么可以将 (char* + int) 传递给 char* 并使其正常工作?类型系统如何解释这个语句?
提前致谢。
【问题讨论】:
-
strlen()实际上返回size_t,而不是int。一个重要的区别是size_t是无符号类型,即它只能保存正数。这是有道理的 - 字符串长度可以是 0、1 或 30000 个字符,但不能是 -7。
标签: c++ types constructor