我正在阅读Deitel的书中的C ++,这本书达到了这一部分:
某些函数(例如main)不是类的成员。这些功能称为全局功能。我们从头开始介绍各种功能,以介绍不属于特定类的全局功能的概念。
在说了这个块之后(该块本身完全在Math库中),它引入了一些函数,例如属于cmath标头的sqrt(),最后它说所有属于cmath的函数都是全局的!
所以,这是我的问题:在最上面,我们说所有不属于任何类的函数都是全局函数。但随后它说与cmath相关的所有功能都是全局的!那不是矛盾吗?我的意思是,如果我们接受这一点,则意味着并非所有标头都是class。这样对吗?
我编写了一个可以获取std::string类对象大小的简单函数,并且我知道该size()函数std::string执行相同的工作,所以我想知道该size()函数是否真的像我的函数一样工作,或者它是否更复杂?如果它更复杂,那么如何?
int sizeOfString(const string str) {
int i=0;
while (str[i] != '\0') {
++i;
}
return i;
}
Run Code Online (Sandbox Code Playgroud) 为什么sizeof在这段代码中为同一个对象返回两个不同的答案?
class Test {
public:
int operator!() const {
return sizeof(this);
}
};
int main() {
Test obj;
std::cout << sizeof(obj) << " | " << !obj;
}
Run Code Online (Sandbox Code Playgroud)
上面代码的输出是 1 | 8