String的赋值
今天看到代码里有一段这样的操作:
1 | int getline(std::string &str, FILE *fp) { |
第一反应是这句str = buf不是把buf的指针赋给str,然后free不是啥都没了吗?后来仔细看了看,其实std::string的赋值操作符是重载的,有一个定义是:
1 | string& operator= (const char* s); |
buf是直接把内容赋给了str,和指针无关了。
今天看到代码里有一段这样的操作:
1 | int getline(std::string &str, FILE *fp) { |
第一反应是这句str = buf不是把buf的指针赋给str,然后free不是啥都没了吗?后来仔细看了看,其实std::string的赋值操作符是重载的,有一个定义是:
1 | string& operator= (const char* s); |
buf是直接把内容赋给了str,和指针无关了。