我见过人们同时使用“<<”和“+”来输出不同的字符串。
cout << firstname << lastname << endl;
相对:
cout << firstname + lastname << endl;
使用“<<”更好还是没有太大区别?
<<
我会说在这种特殊情况下使用它更好。否则,连接会导致一个临时的,它可能会无缘无故地分配内存。
当然,使用<<
- 连接字符串将创建粘贴在一起的两个字符串的副本。它是否还在顶部分配额外的内存取决于字符串在 C++ 库中是如何实现的,但如果名字和姓氏“足够长”(大于 8-16 个字符),那么它很可能会分配内存(然后在不再需要临时副本时再次释放它)。
相比之下,运营商的<<
开销很小,所以毫无疑问它更好。
当然,除非你做了成千上万这样的事情,否则你不太可能有可测量的差异。但是最好不要浪费 CPU 周期,你永远不知道它们在其他地方有什么用处……;)
级联<<
是更好的选择。
为了性能,正如其他主题所提到的,操作员<<
不一定会引入任何临时对象。级联<<
可以视为管道。
有时,+
如果您的左操作数不是用户定义的类型,则不能使用,除非您提供相应的operator+
. 例如,
cout << "Hello, " << lastname << endl;// Works
cout << "Hello, " + lastname << endl; // This won't work