用 cout<< 输出类里面的信息

最近学了一个叫做运算符重载的玩意,于是就想到将 << 运算符进行重载以达到用cout输出一个

类对象的信息。(萌新)

示例:

#include <iostream>

class Person {
private:
    std://string name;
    int age;
public:

//自定义构造函数,使用初始化列表对数据成员进行初始化
    Person(const std::string& n, int a) : name(n), age(a) {}

//此处将operator<<函数声明成友元函数,类外部的operator<<函数中就可以访问到

//私有的name和age数据成员了,不然私有成员是无法在类外直接使用滴@w@!

    friend std::ostream& operator<<(std::ostream& os, const Person& p);
};

//operator<<函数定义

std::ostream& operator<<(std::ostream& os, const Person& p) {

//输出Person类某个对象的name值和age值
    os << "Name: " << p.name << ", Age: " << p.age;
    return os;
}

int main() {

//定义一个对象
    Person person("Alice", 30);

//直接用cout<<输出对象person
    std::cout << person << std::endl;
    return 0;
}

最后的输出结果应为

Name:Alice,Age:30

于是你就学会了怎么使用cout<<直接输出一个类对象   >_<(嘿嘿)

原理:

用cout<<输出类对象的信息原理呢主要涉及一下几个方面:

<1>运算符重载机制(这不用说相信聪明的你也知道)

因为C++允许程序猿们通过定义特定的函数来实现给运算符赋予新的含义,

所以这里重载 << 运算符实际上就是定义了一个函数,该函数接收一个ostream

对象引用和一个自定义类的对象引用作为参数,继而返回一个ostream对象的引用.

当程序猿们使用 cout<< 输出自定义类对象滴时候,实际上就是调用了这个重载的

<< 运算符函数。因为编译器会根据参数的类型自动匹配到这个函数,然后执行其中的代码.

<2>输出流对象 ostream     

ostreamC++标准库中用于输出的类。cout 是一个预定义的 ostream 对象,代表

标准输出流 (通常是控制台)。

故在重载的 << 运算符函数中,通过操作 ostream 对象,可以将自定义类的信息写入到输出流中,

例如,使用 os<<"Name: "<<p.name<<",Age: "<< p.age; 将类的成员变量的值输出到输出流中。

总而言之,通过 运算符重载 和利用 ostream对象,就可以实现使用 cout<< 输出类的信息和功能了。这个功能呢可以为程序猿们提供一种方便的方式来输出自定义类的对象状态,与此同时也增强了C++语言在处理自定义数据类型时的灵活性和实用性 (^_^)

猜你喜欢

转载自blog.csdn.net/qq_59840326/article/details/141993981
今日推荐