c++关于类成员函数中 参数列表中参数访问自身的私有变量

2023-11-02

本人的第四篇CSDN文章,有错误一定要指出啊啊啊啊啊啊啊啊啊啊

C++关于类的成员函数中,参数列表中访问参数的自身的私有变量


在做作业时候,在写类函数的时候遇到了问题。
当参数列表为本类的参数时候,可以直接访问参数的私有变量,于是自己探究了下用法和访问范围。

//test.h
#pragma once
#include<iostream>
class test {
private:
	int _num;
public:
	test(int num=10):_num(num) {
		
		std::cout << "this is constructer "<<_num<<'\n';
	}

	int myint(const test&a) {
		return _num + a._num;
	}

	friend int operator+(const test& a, const test& b) {
		return a._num + b._num;
	}
	void mytest() {
		test b;
		std::cout << b._num<<'\n';
	}
};

//test_compare.h
#pragma once
#include<iostream>
#include"test.h"
template<typename T>
class test_compare {
private:
	int _num;
public:
	test_compare(int num = 10) :_num(num) {

		std::cout << "this is constructer " << _num << '\n';
	}

	int myint(const test_compare<T>& a) {
		return _num + a._num;
	}

	friend int operator+(const test_compare<T>& a, const test_compare<T>& b) {
		return a._num + b._num;
	}
	void mytest() {
		test_compare<int> b;
		std::cout << b._num << '\n';
	}
	void interaction(test a) {
		std::cout << a._num;
	}
};
//main.cpp
#include<iostream>
#include"test.h"
#include"test_compare.h"
int main() {
	test a;
	test b(20);
	std::cout<<a.myint(b)<<std::endl;
	std::cout << a + b << std::endl;
	a.mytest();
	std::cout << std::endl;
	test_compare<int> a1;
	test_compare<int> b1(20);
	std::cout << a1.myint(b1) << std::endl;
	std::cout << a1 + b1 << std::endl;
	a1.mytest();
	a1.interaction(a);
}

大家可以看下这个代码会不会有问题。

报错图片

所以我们可以看见错误是出现在test_compare中调用了test的私有变量。

但是大家有没有看见其他的都是没有错误的,就是相当于不论是普通类还是模板类,如果是本类参数都可以调用参数的私有函数。说实话这点我还是有点不理解的,如果有大神能告诉我为什么吗。

把a1.interaction(a);注释掉以后,运行截图。
在这里插入图片描述
所以得出结论:如果是本类中函数参数列表是自己类的参数,可以调用参数的私有变量!

大家加油!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++关于类成员函数中 参数列表中参数访问自身的私有变量 的相关文章

随机推荐

  • Java实现定时任务

    文章目录 1 使用java util Timer 2 使用ScheduledExecutorService 3 使用Spring Task 1 使用java util Timer 这种方式的定时任务主要用到两个类 Timer 和 Timer
  • 什么样的人适合网络营销?

    最近码教授发现很多网友都在网上发问 什么样的适合做网络营销 网络营销难吗 说实话这行业来的太快 很多都没准备好就来了 说得夸张点但凡现在做这行业的基本都不缺客户都缺人 有一点经验就有可能今天4000明天去另外一公司给到8000 但真心好用的
  • 平衡二叉树平衡因子_数据结构:平衡二叉树

    1 基本概念 平衡二叉树 AVL树 或为空树 或为如下性质的二叉排序树 左右子树深度之差的绝对值不超过1 左右子树仍然为平衡二叉树 平衡因子BF 左子树深度 右子树深度 平衡二叉树每个结点的平衡因子只能是1 0 1 若其绝对值超过1 则该二
  • 计算机技能是啥,简历中的IT技能是什么意思?

    IT技能就是你会的计算机知识 从精通程度上可以分为精通 熟练 了解等 从所学内容上 把你学过的语言 用过的工具 掌握的技术都写上 按条理分类写 IT技能 比如 熟练操作计算机 熟练使用各类办公软件 如word excel等 能够使用fron
  • UniApp中如何实现APP页面横竖屏切换?

    前段时间做了一个驾考项目 该项目是使用UniApp搭建的 其中就遇到的一个需求就是横竖屏切换 用横屏来模拟驾照考试 通过查阅文档发现 在UniApp中 要实现横竖屏切换可以由以下步骤来实现 一 通过配置页面的 manifest json 文
  • 数据属性WEKA学习总结

    首先声明 我是一个菜鸟 一下文章中现出技术误导情况盖不负责 1 Weka理处的数据表格中 一个横行称为一个例实 Instance 竖行代表一个属性 Arrtibute 数据表格称为一个数据集 在weka看来 现呈了属性之间的一种关系 Rel
  • Postman发送post请求

    Postman发送post请求 在服务器开发过程中 要经常对get post接口进行测试 get请求 浏览器就可以完成 而post请求浏览器用起来有点麻烦 有的浏览器支持的不太好 个人用过火狐 还可以 今天介绍一下Postman发送post
  • Linux学习之shell bash

    一 硬件 内核 与shell 有操作系统就会离不开shell这个东西 操作系统实际上是一组软件 由于这组软件在控制整个硬件与管理系统的活动检测 如果能被随意操作那就乱套了 所以不能被非管理员用户所随意使用 但是对于用户来说也是需要体验的 用
  • 用python统计字母个数_如何用python统计字符串中字母个数?

    如何用python统计字符串中字母个数 python统计字符串中字母个数的方法 先使用这三种代码dic dict d s set s helloworld 1 d dict for x in s if x not in d keys d x
  • 编写Linux C++程序如何影响VIRT(虚存)和RES(实存/常驻内存)

    在Linux命令行中执行top命令 可以查询到所有进程使用的VIRT虚拟内存 RES常驻内存和共享内存SHR 那么 什么是VIRT虚拟内存 RES常驻内存和共享内存SHR 我们编写的Linux C 程序如何影响它们呢 查阅资料后 归纳一下
  • cadence allegro绘制原理图库

    前言 为什么投向了allegro 本科毕业于电子信息工程专业 相信很多学生也和我一样 在一个类似于叫EDA的课上通过DXP Altium Designer学习绘制PCB电路 因此大多数学生应该是会用AD这款软件的 至少最基本的流程不会出问题
  • C++学习1-vector学习

    https blog csdn net m0 59924193 article details 122535504 1 push back 2 pop back 3 size 4 clear 5 insert 6 erase vector变
  • 用abp vNext快速开发Quartz.NET定时任务管理界面

    用abp vNext快速开发Quartz NET定时任务管理界面 今天这篇文章我将通过实例代码带着大家一步一步通过abp vNext这个asp net core的快速开发框架来进行Quartz net定时任务调度的管理界面的开发 大伙最好跟
  • uniapp使用自带【刷新方法】与使用【scroll-view】实现下拉刷新上拉加载

    前言 uniapp自带下拉刷新 上拉加载功能基本可以满足刷新需求 但是顶部有状态栏的页面就得进行特殊处理 使用scroll view解决 状态栏会连带被下拉问题 1 uniapp自带下拉刷新 上拉加载 在page json中对应页面路由设置
  • Flex弹性盒子的项目属性

    1 align self 项目对齐方式 1 align self属性表示当前项目可以和其他项目拥有不一样的对齐方式 2 取值 auto 默认值 和父元素align self的值一致 具有继承性 flex start 该项目顶端对齐 flex
  • PyTorch——解决报错“RuntimeError: running_mean should contain *** elements not ***”

    1 问题描述 在使用PyTorch编程的时候 经常遇到一种报错就是 RuntimeError running mean should contain elements not 这次我具体的报错信息是 File home software p
  • Unity性能优化之Resources System

    目录 1 什么是Resources System 2 关于Resources System的使用相关 1 官方强烈建议不要使用它 2 如何适当的使用Resources System 3 当项目中Resources文件夹结构复杂 内容多会对应
  • C++模板元编程基础之“std::enable_if”的使用

    std enable if典型用法 代码示例 通过返回值使用 template
  • 使用FD_CLOEXEC实现close-on-exec,关闭子进程无用文件描述符

    我们经常会碰到需要fork子进程的情况 而且子进程很可能会继续exec新的程序 这就不得不提到子进程中无用文件描述符的问题 fork函数的使用本不是这里讨论的话题 但必须提一下的是 子进程以写时复制 COW Copy On Write 方式
  • c++关于类成员函数中 参数列表中参数访问自身的私有变量

    本人的第四篇CSDN文章 有错误一定要指出啊啊啊啊啊啊啊啊啊啊 C 关于类的成员函数中 参数列表中访问参数的自身的私有变量 在做作业时候 在写类函数的时候遇到了问题 当参数列表为本类的参数时候 可以直接访问参数的私有变量 于是自己探究了下用