CPP 自定义流函数[more cpp-1]

问题的引入:打印自定义类

众所周知,CPP中引入了std::cout函数,取代了C中的printf函数,让我们不用再写转义字符就可以实现控制台打印,真的十分方便的语法♪(´▽`)

int num=114541;
std::cout<<“hello world!<<num<<std::endl;
string str="hello too";
std::cout<<str<<std::endl;

但是,cout却不能打印自定义类型

struct mstr
{
int tah;
}
int main()
{
mstr mstrexpm={114};
//cout<<mstrexpm<<endl;	
//这是不可行的,编译器会报错
}

也许你这样写

void printmstr(mstr& mstrin)
{ cout<<mstin.tah<<endl;
}

但是这也太不优雅了(其实是作者想水一篇文章🕶️…)我们要知其一知其二(看看cout中发生了什么)

你cout的时候,发生了什么?(函数层面)

为什么,我们需要简单了解一下CPP中的流机制,在抽象层面,CPP把一切的输入输出都看成(键盘输入,鼠标输入,屏幕显示,乃至网络输入输出)cout就是一个预定义的流对象 ,**<<**则是被重载的运算符,下面你写的代码

#include <iostream>
using namespace std;

int main()
{
  cout<<"hello world"<<endl;
}

在编译器眼里,其实是这样的,本质是函数调用
(关于流,其实值得讲的东西很多,这里只是基本层面的理解, 关注博主,了解更多CPP知识

#include <iostream>
using namespace std;

int main()
{
  std::operator<<(std::cout, "hello world").operator<<(std::endl);
  return 0;
}

那就是说明,CPP标准库里,其实已经写好内建类型和STD库对象的打印函数了,所以可以打印。那我要打印自己的类呢?

自己写一个函数不久行了?

下面以一个学生类为例

class Student {
public:
	int age;
	int id;
	std::string name;

	// 构造函数
	Student(int a, int i, const std::string& n) : age(a), id(i), name(n) {}
};

// 自定义流输出操作符
std::ostream& operator<<(std::ostream& os, const Student& student) {
//返回值是std::ostream&  是输出流的引用,用于连续的输出
//std::ostream& os, const Student& student对应上面函数调用的参数
	os << "Name: " << student.name << ", Age: " << student.age << ", ID: " << student.id;
	//os是输出流对象,是下面需要返回的
	return os;
}

int main() {
	Student s(20, 12345, "Alice");
	std::cout << s << std::endl;
	return 0;
}

这样写是更优雅了吧(好像没啥区别)

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cppcheck-2.11-x64-setup.msi是一种用于C++代码静态分析的软件工具。静态分析是一种分析代码而不需要运行它的方法,它可以帮助开发人员发现潜在的代码问题和错误。cppcheck是一个跨平台的工具,它可以在Windows操作系统上运行。 cppcheck-2.11-x64-setup.msi是适用于64位Windows系统的安装程序。通过运行这个安装程序,您可以将cppcheck安装到您的计算机上,并使用它来分析和检查您的C++代码。 cppcheck可以检查代码中的各种错误,比如空指针解引用、缓冲区溢出、内存泄漏等。它还可以检查未使用的变量和函数、类型不匹配、未初始化的变量、代码风格问题等。 cppcheck-2.11-x64-setup.msi提供了一个用户友好的安装界面,使安装过程简单方便。安装完成后,您可以在命令行界面或集成开发环境中使用cppcheck。打开命令行界面或者IDE,输入cppcheck后跟上您想要分析的代码文件的路径,cppcheck将会对这些代码进行分析,并输出任何检测到的问题和错误。 要使用cppcheck进行代码分析,建议您在编码过程中定期运行cppcheck来检查和修复潜在的问题,以提高代码的质量和可靠性。cppcheck还支持一些附加选项,可以根据您的需求定制分析过程,例如通过设置不同的检查级别、排除指定的代码文件或文件夹等。 总之,cppcheck-2.11-x64-setup.msi是一种方便的工具,可以帮助C++开发人员发现和修复代码中的潜在问题和错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值