之前在接触Java类的过程中,main函数中的输出和普通输出一样。但C++学习时,遇到了似乎还挺重要的流运算符等一系列重载,于是疑惑为什么需要重载,而不能直接cout呢?
我自己听完网课,觉得是cout也是ostream类定义的对象,而cout如果要访问自定义类里的私有元素,就需要声明友元,因为类之间是并列的关系。
但下图框起来的部分,看上去是在定义重载,不是很懂是起什么作用?
希望捞捞!
之前在接触Java类的过程中,main函数中的输出和普通输出一样。但C++学习时,遇到了似乎还挺重要的流运算符等一系列重载,于是疑惑为什么需要重载,而不能直接cout呢?
我自己听完网课,觉得是cout也是ostream类定义的对象,而cout如果要访问自定义类里的私有元素,就需要声明友元,因为类之间是并列的关系。
但下图框起来的部分,看上去是在定义重载,不是很懂是起什么作用?
希望捞捞!
就是为了语法上让你能直接输入输出你自定义的结构体,因为无法预判你的结构体是什么样的,所以没办法实现。比如你自己定义了一个复杂的struct里面有很多成员有int,有string,也有其他复杂的结构体,那你cout这个结构体,会输出什么,所以这块你可以自定义输出这个结构体的格式和内容。这就是意义。就像c语言实现一个打印函数一样,去打印某个结构体,里面实现就是printf打印基础类型的变量。
c++中struct和class除了默认访问权限,其他都一样。