private和public

2023-05-16

一、结构体/类的定义和实现分离,代码可读性更强(非必须)

//xxx.h头文件
struct Test
{
	int x;
	int y;
	int z;
	
	void Init(int x,int y,int z);
	void Function1();
	void Function2();
	void Function3();
}
//xxx.cpp
#include<stdio.h>
#include"structure.h"
void Test::Init(int x, int y, int z)
{
	this->x = x;
	this->y = y;
	this->z = z;
}
void Test::Function1()
{
	printf("Function1:%x\n", x);
}
void Test::Function2()
{
	printf("Function1:%x\n", y);
}
void Test::Function3()
{
	printf("Function3:%x\n", z);
}

特别说明:
xxx.h只是一个文件,可以是任何的后缀名;
#include " "/<>的作用只是把里面的内容复制过来;

二、public private的使用
public:这里的成员哪里都可以使用,被公有继承的时候仍然能被子类对象调用,但被私有继承的时候只能在原类定义中使用;一旦发布成为public的成员是不能改名字的;
private的意思是,这个成员只用于内部使用,不要在其他的地方使用.
在这里插入图片描述
总结:
1、对外提供的函数或变量,发布成为public的,不能随意改动;
2、可能会改动的函数或变量,定义成private的,这样编译器会在使用的时候检测;
3、只有结构体内部的函数才可以访问private的成员;
4、public/private可以修饰函数,也可以修饰变量;

三、private声明的成员也并非不可访问

  • 通过指针的加减可以实现private成员的访问
    因为private仅仅是权限控制,在内存上的存储和public修饰的时候是一样的,只是编译器赋予权限不同;
    在这里插入图片描述

  • 一般来说:

    • private修饰的成员与普通的成员没有区别,只是编译器会检测;
    • private修饰的成员只要自己的其他成员才能访问;

四:class&struct
权限区别:编译器默认class中的成员为private 而struct中的成员为public;
继承区别:class默认是私有继承,struct默认公有继承;class继承时若不想改变基类成员属性,选择public继承;

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

private和public 的相关文章

  • Python 3 中真正的私有变量

    所以我知道如何在 python 中使变量 私有 如下所示 class Foo def init self self private bar 这 有效 但无效 如下所示 foo Foo private in vars foo False Fo
  • 如何在 WPF 中将控件标记为“私有”?

    对于 WinForms 程序 我已经习惯将控件的 Modifiers 属性标记为 私有 以防止外部类和其他任何您能够看到和弄乱它们的东西 由于 WPF 还很陌生 我在 WPF 中看不到明显的等效项 因此外部类无法看到我放到表单或另一个用户控
  • 在嵌套匿名结构上忽略 C++ 私有修饰符

    以下示例代码在 Visual C 中编译得很好 class Test private struct struct int privateData int main int char Test test test privateData 0
  • 主干视图的私有和公共变量

    在主干视图中 您将把私有变量和公共变量放在哪里 现在我有这样的事情 myView Backbone View extend initialize function options this myPublic I m public 我尝试添加
  • 使用私有 Bitbucket Mercurial 存储库配置composer.json

    我的项目使用我自己的库 该库位于 bitbucket org 上的私人 Mercurial 存储库中 该库没有配置composer json 我尝试将该库作为我的项目的依赖项 首先 我向composer json写入以下字符串 requir
  • C++ 类(公共、私有和受保护)

    C 中的类如何声明public private or protected 在 C 中 不存在像 Java 或 C 中那样整个类具有访问说明符的概念 如果一段代码具有类的可见性 则它可以引用该类的名称并对其进行操作 也就是说 这有一些限制 例
  • 元组结构构造函数抱怨私有字段

    我正在开发一个基本的 shell 解释器来熟悉 Rust 在处理 shell 中存储挂起作业的表时 我遇到了以下编译器错误消息 error cannot invoke tuple struct constructor with privat
  • 在 C# 中将一组成员标记为私有/公共

    在 C 类声明中 您可以将一组成员标记为私有或公共 例如 private int x double y 好像c 中没有办法做到这一点 我错了吗 不 您不能在 C 中执行此操作 最好的情况下 你可以对成员使用默认的可见性 即私有的 而不是使用
  • 用于测试私有方法的Java工具?

    对于测试私有方法的意义有不同的看法 例如 here https softwareengineering stackexchange com questions 16732 unit testing internal components a
  • Google Apps 脚本是否支持私有类属性?

    我尝试使用私人课程特色 https developer mozilla org en US docs Web JavaScript Reference Classes Private class fields在 Google Apps 脚本
  • 类方法如何访问同一类的另一个实例的私有成员?

    我无法理解jdk1 7中的代码 value是私有的 那么为什么代码可以使用它 例如anotherString value public final class String implements java io Serializable C
  • python类中私有变量的实际实现[重复]

    这个问题在这里已经有答案了 可能的重复 Python 中对象名称前的单下划线和双下划线的含义 https stackoverflow com questions 1301346 the meaning of a single and a d
  • DART:扩展类中抽象方法的实现

    我在文件 myclass dart 中有两个类 abstract class A myAbstractMethod class B extends A 此时编译显示 MISSING CONCRETE IMPLEMENTATION OF一 方
  • Java 兼容性的公共字段

    我最近对 Kotlin 作为一种语言很感兴趣 因为我们开发的平台是基于 Java 6 的 因此缺乏近年来为 Java 带来的任何语法糖 只有一件事使得在开发中无法使用 Kotlin 而不是 Java 那就是我们开发的平台在内部使用了一些反射
  • Visual C# 2010 Express:为新类指定默认访问修饰符?

    每当我使用 Visual Studio 2010 Express C 创建新类时 它都会创建不带访问修饰符的新类 十分之九我希望我的新课程公开 如何让 Visual Studio 默认创建带有 public 修饰符的空类模板 诀窍是创建一个
  • 从类定义中省略“private”关键字是否会造成混淆?

    我最近删除了一个private从类定义中指定 因为它位于顶部 紧接在class关键词 class MyClass private int someVariable 我认为这是多余的 一位同事不同意这一点 称这实际上 隐藏 了private数
  • Java:使用类型参数访问私有构造函数

    这是后续这个关于java私有构造函数的问题 https stackoverflow com questions 2599440 accessing the private constructor 假设我有以下课程 class Foo
  • 为什么没有人接受 C# 中的公共字段?

    似乎每个 C 静态分析器在看到公共字段时都会抱怨 但为什么 当然 在某些情况下 公共 或内部 field就足够了 拥有一个拥有它的财产是没有意义的get and set 方法 如果我确定我不会重新定义该字段或添加该字段怎么办 副作用很糟糕
  • 设计决策:为什么以及何时将接口设为私有?

    设计决策中是否使用过私有接口 如果是这样 原因是什么 您什么时候知道需要私有接口 A 顶层接口不能是私有的 它只能有public或包访问 来自Java 语言规范 第 9 1 1 节 接口修饰符 https docs oracle com j
  • 如何将模块化 Sinatra 应用程序部署到 Heroku?

    由于某种原因 我无法访问公共目录中的任何文件 未发现错误 我不会把public显然 URL 中的一部分 查看GitHub 上的 Lovers 源代码存储库 https github com mattdipasquale loversapp

随机推荐