相关疑难解决方法(0)

cout和cin不是函数,那么它们是什么?

一般用C编程语言我们认为printf和scanf是函数.当谈到cout和cin时,在C++中它们是什么?我的意思是它们不能成为函数,因为它们没有括号,所以它们不是函数.那么什么是cout和cin是标准输入和输出函数?还是其他什么?

c++ iostream

11
推荐指数
2
解决办法
2万
查看次数

将函数实现为自由函数而不是C++中的成员是否有任何优势?

我对技术物流很感兴趣.是否有任何优势,例如保存的内存等,来实现处理类的某些功能?

特别是,将操作符重载实现为自由函数(假设您不需要访问任何私有成员,即使这样,您也可以让他们使用非成员的朋友)?

每次创建对象时,是否为类的每个函数提供了不同的内存地址?

c++ optimization class c++11

6
推荐指数
2
解决办法
1037
查看次数

`cout << x`和`cout.operator <<(x)`之间的区别?

我一直在尝试使用for_each将字符串向量打印到cout.但是,在制定语句时,我发现std::ostream::operator<<(const std::string &);未定义导致编译器错误.以下代码说明了该问题:

#include <iostream>
#include <string>


int main()
{
    std::string message = "Hello World!\n";

    // This works
    std::cout << message;

    // Compiler error
    std::cout.operator <<(message);
}
Run Code Online (Sandbox Code Playgroud)

我认为这两个语句看起来应该与编译器完全相同.显然他们不是.那么有什么不同呢?

解决了

正如Tomalak和Prasoon表示我需要调用此函数:

std::ostream& operator<<(std::ostream&, const std::string&);
Run Code Online (Sandbox Code Playgroud)

所以以下示例将起作用:

#include <iostream>
#include <string>


int main()
{
    std::string message = "Hello World!\n";
    operator<<(std::cout, message);
}
Run Code Online (Sandbox Code Playgroud)

至于我原来的目标(用的for_each打印字符串的向量):现在看来似乎是更好地使用std::copy具有std::ostream_iterator如下图所示:如何使用的for_each输出cout的?

c++

2
推荐指数
2
解决办法
527
查看次数

标签 统计

c++ ×3

c++11 ×1

class ×1

iostream ×1

optimization ×1