C++ 友元跨命名空间使用

news/2024/11/14 20:40:17/文章来源:https://www.cnblogs.com/huvjie/p/18546750

+运算符重载为例:

#include <iostream>
#include <string>// 前置声明是必须的
namespace mydog
{class Dog;
}namespace myadd
{mydog::Dog operator+(const mydog::Dog dog1, const mydog::Dog dog2);
}namespace mydog
{class Dog{friend Dog myadd::operator+(const Dog dog1, const Dog dog2);private:std::string name{ "小黑" };int age{ 2 };public:void show(){std::cout << "名字:" << name << "    " << "年龄:" << age << '\n';}Dog() = default;Dog(const std::string &n, int a):name{n}, age{a}{}};
}mydog::Dog myadd::operator+(const mydog::Dog dog1, const mydog::Dog dog2)
{mydog::Dog my_dog_add;my_dog_add.age = dog1.age + dog2.age;my_dog_add.name = dog1.name + "+" + dog2.name;return my_dog_add;
}int main()
{using mydog::Dog;Dog dog1("小花", 3);Dog dog2;using myadd::operator+; // 必须不然找不到函数,或者直接 using namespace myadd;加入命名空间Dog addDog = dog1 + dog2;addDog.show();system("pause");return 0;
}

输出:

名字:小花+小黑    年龄:5

类型的前置声明貌似是必须的,不然编译器好像连接不到。

另外,友元关系不继承,且与放到private或public无关。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/833614.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Intellij IDEA如何设置中文版?安装中文汉化包插件?失败问题解决!

前言 大家好,我是小徐啊。 Intellij IDEA默认是英文的操作界面,因为是外国人开发的嘛~对于英文好一点的同学来说,英文就英文吧,但对于英文比较差的同学,就还是希望能够汉化一下,变成熟悉的中文。今天小徐就来介绍下如何在IDEA中安装汉化插件,以及在这过程中,我遇到的奇…

TCP_UDP

TCP, UDP Flood 攻击原理TCP Flood攻击配置环境Windows Server 2016配置服务器管理器,创建一个Web服务器并开启该服务器功能kali配置 vim /etc/network/interfacesifup eth0 开启网络 查看Kali ip 信息:修改路由器信息: 拓扑关系如下所示:GNS 3 中修改路由器 R1:GNS3 中修改…

Python用CEEMDAN-LSTM-VMD金融股价数据预测及SVR、AR、HAR对比可视化

全文链接:https://tecdat.cn/?p=38224 原文出处:拓端数据部落公众号分析师:Duqiao Han股票市场是一个复杂的非线性系统,股价受到许多经济和社会因素的影响。因此,传统的线性或近线性预测模型很难有效、准确地预测股票指数的价格趋势。众所周知,深度学习通过逐层特征转换…

java 反序列化 cc4 复现

java 反序列化 cc4 复现复现环境:jdk<=8u65,commonsCollections=4.0 CommonsCollections4.x版本移除了InvokerTransformer类不再继承Serializable,导致无法序列化.但是提供了TransformingComparator为CommonsCollections3.x所没有的,又带来了新的反序列化危险. cc4的执行命令…

ICMP 重定向攻击

ICMP 重定向攻击原理 ICMP (Internet Control Message Protocol) :Internet 控制报文协议,用于在 IP 主机和 路由器之间传递控制消息(控制消息指网络是否通、主机是否可达、路由器是否可用等)ICMP 重定向 在某些特定情况下,路由器在检测到主机使用非优化路由时,会向主机发送…

java 反序列化 cc3 复现

java 反序列化 cc3 复现版本要求:jdk版本<=8u65,common-collections版本<=3.2.1 在很多时候,Runtime会被黑名单禁用.在这些情况下,我们需要去构造自定义的类加载器来加载自定义的字节码. 类加载机制 双亲委派 这里直接粘别人的了.实现一个自定义类加载器需要继承 ClassLo…

使用Tailwind CSS的几个小Tips

前情 Tailwind CSS 是一个原子类 CSS 框架,它将基础的 CSS 全部拆分为原子级别。它的工作原理是扫描所有 HTML 文件、JavaScript 文件以及任何模板中的 CSS 类名,然后生成相应的样式代码并写入到一个静态 CSS 文件中。Tailwind CSS 快速、灵活、可靠、没有运行时负担。自从接…

给朋友写的爬Steam游戏评论的爬虫

详见配图如果你需要的话,可以从这里下载(包括程序、说明和演示视频): https://pan.baidu.com/s/1lN-DNTB7pVXan94hCsqYUQ?pwd=72mg(本来想传蓝奏云的,但是蓝奏云不支持传图片和视频,而且单文件大小有限制,弄起来会比百度云盘还麻烦)

apisix~限流插件的使用

参考:https://i4t.com/19399.html https://github.com/apache/apisix/issues/9193 https://github.com/apache/apisix/issues/9830 https://apisix.apache.org/docs/apisix/plugins/limit-conn/ https://blog.frankel.ch/different-rate-limits-apisix/在 Apache APISIX 中,限…

项目冲刺11.14

这个作业属于哪个课程 计科22级34班这个作业要求在哪里 作业要求这个作业的目标 进行为期七天的项目冲刺并记录前言 本篇博客是项目冲刺的第六篇,七篇博客的汇总如下:博客汇总第一篇博客第二篇博客第三篇博客第四篇博客第五篇博客第六篇博客第七篇博客团队简介队名 拖延是你不…

研途无忧Alpha冲刺第二天

Alpha冲刺dya2 研途无忧-冲刺日志(第二天) 进度表成员 完成的任务 完成的任务时长 剩余时间马鑫 小研帮部分页面的前端设计、部分工作安排与调整、冲刺日志的撰写 4h 14h王强 小研帮部分页面的前端设计、小研帮数据库的完善、相关云函数的设计 4h 14h黄昕怡 研小fu性格的切换…

K-Means聚类分析以及误差平方和SSE(Python实现)

代码介绍 使用 make_blobs 函数生成一个二维的随机数据集,包含120个样本和3个中心。生成的数据将用于后续的聚类分析。 数据生成后,通过散点图可视化这些点,展示不同的聚类中心。 定义了一个函数 calculate_sse,用于计算给定聚类数 k 时的误差平方和(SSE)。该函数使用K-M…