String的赋值 发表于 2018-05-26 | 分类于 软件之路 | | 今天看到代码里有一段这样的操作: 12345678int getline(std::string &str, FILE *fp) { char *buf = reinterpret_cast<char *>(malloc(2048)); //something str = buf; free(buf); buf = NULL; return str.length(); 第一反应是这句str = buf不是把buf的指针赋给str,然后free不是啥都没了吗?后来仔细看了看,其实std::string的赋值操作符是重载的,有一个定义是: 1string& operator= (const char* s); buf是直接把内容赋给了str,和指针无关了。