c/c++中的struct和class的区别

2023-05-16

主要有两种情况:

1.C语言中的struct和c++中的class区别。

2.c++中的struct和c++中的class的区别。


下面分别介绍:

1.C语言中的struct和c++中的class的区别

C语言中的struct只能定义成员变量,不能够定义成员函数。如下所示:

struct point
{
    int x;
    int y;
    void print()
    {
        printf("hello\n");//compile error
    }
}

2.c++中的struct和class的区别。-----对默认成员的访问权限和继承方式的不同

在c++中的struct有构造函数和成员函数。并且有class的其它特性。c++中的struct中默认的成员是public的,而class中成员默认是private的,如下代码:

#include "stdafx.h"
#include <iostream>
//#include <struct_class.h>
using namespace std;


class test_class
{
	int x;
	int y;
	void print()
	{
		cout << "ptint output x,y = " << x << y << endl;
	}
public:
	test_class(int x, int y)
	{
		this->x = x;
		this->y = y;
	}
	void print1()
	{
		cout << "print1 output x,y = " << x << y << endl;
	}
};

struct test_struct
{
	int x;
	int y;
	void print()
	{
		cout << "class ptint output x,y = " << x << y << endl;
	}
	test_struct(int x, int y)
	{
		this->x = x;
		this->y = y;
	}
private:
	void print1()
	{
		cout << "class ptint1 output x,y = " << x << y << endl;
	}
};

int _tmain(int argc, _TCHAR* argv[])
{
	cout << "hello" << endl;
	test_class class_a(2,3);//调用test_class带参数的构造函数
	test_struct struct_b(5,6);//调用test_struct带参数的构造函数

	class_a.print1();
	struct_b.print();
	
	while (1);
	return 0;
}

从继承角度看,class继承默认是private继承,而struct的继承是public继承。以private方式继承父类的子类对象不能访问父类的public成员。

 

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

c/c++中的struct和class的区别 的相关文章

  • PHP:数据库连接类构造方法

    我是面向对象编程的新手 最初 我是在类内部和构造函数外部定义变量并为其赋值 但是在今天的 Java OOP 课程之后 我被告知这是不好的风格 应该避免 这是我模拟的原始 PHP 数据库连接类 class DatabaseConnection
  • 使用 for 循环创建链表

    这是我的结构 struct ListItem int data struct ListItem next 假设链表的第一个节点的 data 0 我想编写一个 for 循环来创建大小为 5 的链表 但我不知道如何工作 我尝试了以下方法 int
  • WriteLine 与类

    我正在制作一个 SchoolApp 程序来学习 C 并且我正在尝试实现以下主要功能 namespace SchoolApp class Program public static void Main string args School s
  • 为什么快速调用时Python类的id不唯一?

    我正在Python 3 3 3 中做一些事情 我遇到了一些让我困惑的事情 因为据我了解 类每次被调用时都会获得一个新的id 假设您在某个 py 文件中包含以下内容 class someClass pass print someClass p
  • 是否可以使用“+”运算符添加同一类的两个对象

    我的教科书说我们可以添加同一类的两个对象 V3 V2 V1 全部属于同一类 但是当我在 Turbo c 中测试时 我得到错误 指向同一行的非法结构操作 V3 V1 V2 所以我的问题是是否可以使用 运算符添加同一类的两个对象 如果答案是肯定
  • 将 struct* 从 C# 传递到 C++ dll

    C dll中的结构体定义如下 struct WAVE INFO int channel num int audio type char wave data int wave length 调用方法如下 extern C STRUCTDLL
  • 代表和结构的速度问题

    我遇到了一些与结构和委托有关的速度问题 采用以下控制台应用程序代码 public delegate string StringGetter public class LocalString public LocalString string
  • 用于创建类图的工具[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 请建议用于创建符合以下标准的类图的工具 它应该是平台无关的 因为我使用 Linux 并且该文件预计由使用 Windows Mac 的团队其
  • 在Python中将字典转换为以键作为对象名称的对象

    我有一本这样的字典 d item1 Hi 150 495 item2 Hola 590 40 我想将其转换为对象 如果可能的话递归地 我有一堂课 class Item def init self thetuple self greeting
  • 我应该使用课程吗? (Python)

    我正在尝试编写一个包含一些数学函数的小型 Python 模块 例如 它可能包含如下函数 def quad x a b c return a x 2 b x c 您可能会注意到它包含几个参数 即a b c 除了变量x 现在 如果我将其放入文件
  • 不能从模板 C++ 类继承[重复]

    这个问题在这里已经有答案了 我不知道这里出了什么问题 也许有人可以帮助我 我想继承我的新班级MyDictionary来自模板抽象类dictionary 我有这样的代码 字典 h ifndef UNTITLED CPP DICTIONARY
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • 根据值匹配数组

    我使用以下代码来解析 yaml 并应得到输出为runners对象和函数build应更改数据结构并根据以下结构提供输出 type Exec struct NameVal string Executer string 这是我尝试过的 但我不知道
  • 如何将字节块读入结构体

    我有一个需要处理的资源文件 它包含一组文件 首先 资源文件列出了其中包含的所有文件 以及一些其他数据 例如在此结构中 struct FileEntry byte Value1 char Filename 12 byte Value2 byt
  • 类返回语句不打印任何输出

    我正在学习课程 但遇到了问题return语句 它是语句吗 我希望如此 程序什么也没有打印出来 它只是结束而不做任何事情 class className def createName self name self name name def
  • 访问其他类中的变量 (Java)

    为什么下面的程序没有返回0 因为我正在访问p from a new A 其中还没有main呼吁吗 public class A public static int p 0 public static void main String arg
  • 在 Java 中克隆对象 [3 个问题]

    这样做会调用Asub的clone方法吗 或者Asub深度克隆是否正确 如果没有的话 有没有办法通过这种方法对Asub进行深度克隆呢 abstract class Top extends TopMost protected Object cl
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • 比较 C++ 中的结构时未找到 == 运算符

    比较以下结构的两个实例 我收到错误 struct MyStruct1 MyStruct1 const MyStruct2 my struct 2 const int an int 1 my struct 2 my struct 2 an i
  • yii2 将 JS 文件注册到视图

    我有 A php 视图文件 views A 文件夹 我有 A js js 文件 views A 文件夹 请帮我在视图文件中注册js文件 据我了解 我必须写 this gt registerJsFile path to file js 在视图

随机推荐

  • 分类器对未见过类别(unseen category)的识别问题

    这篇文章比较旧了 xff0c 其实是讨论开集识别问题的 xff08 Open Set Problem xff09 xff0c 可以参考本人的新文章 xff1a 真实世界中的开集识别问题 Open Set Recognition Proble
  • 神经网络如何学习到加法等算法 - 神经编码器-解释器(Neural Programmer-Interpreters)

    算法的本质 何为算法 xff08 algorithm xff09 xff1f 从狭义来讲 xff0c 算法是计算机科学里面的概念 xff0c 简单来说 xff0c 所谓算法就是定义良好的计算过程 xff0c 它取一个或者一组值作为输入 xf
  • 使用pytorch预训练模型分类与特征提取

    pytorch pytorch v0 1 这个是早期版本了 应该是深度学习框架里面比较好使用的了 xff0c 相比于tensorflow xff0c mxnet 可能在用户上稍微少一点 xff0c 有的时候出问题不好找文章 下面就使用pyt
  • 深度学习训练中为什么要将图片随机剪裁(random crop)

    图像分类中 xff0c 深度学习训练时将图片随机剪裁 xff08 random crop xff09 已经成为很普遍的数据扩充 xff08 data augmentation xff09 方法 xff0c 随机剪裁不但提高了模型精度 xff
  • pytorch: grad can be implicitly created only for scalar outputs

    这个错误很早就遇到过但是没看到网上叙述清楚的 xff0c 这里顺便写一下 这里贴一下autograd grad 的注释 grad outputs inputs grad outputs 61 None retain graph 61 Non
  • 【经验】无线传输——空中速率

    1 简述 空中速率表示无线 xff08 在空气中的 xff09 通讯速率 xff0c 也叫空中波特率 信道速率 xff0c 单位bps xff08 秒传输的比特数 xff09 2 速率高低 空中速率高 xff0c 则数据传输速度快 xff0
  • 解决Win7的一个毛病——睡眠失效(只关闭显示器,不关主机)

    1 按下windows徽标键 xff0c 输入regedit xff0c 进入注册表 xff1b 2 进入注册表的HKEY LOCAL MACHINE SYSTEM CurrentControlSet Control Session Man
  • 【视频】海康摄像头、NVR网络协议简介

    目录 郭老二博文之 图像视频汇总 1 软硬件整体架构 2 涉及的网络协议 3 协议简介 3 1 海康私有协议 设备发现SADP 进行设备的发现 激活 修改网络参数 忘记密码等 SDK 4200 系统平台的接入前端设备 协议不对外开放 但对外
  • 十分钟读懂游戏研发、发行、渠道那些事儿

    国庆在家写了7天东西 xff0c 实在是累得够呛 我重新梳理了一下以前做过的事儿 xff0c 正好把去年年初发到腾讯GAD的文章拿过来做个修改补充 xff0c 算是再做个总结吧 这篇文章主要是介绍游戏行业的上下游产业链有哪些玩家 xff0c
  • pomelo源码解析--新建项目(cli工具: pomelo)

    pomelo怎么新建项目 官方文档 1 安装pomelo 2 新建项目HelloWorld 我简单整理了下创建新项目关键步骤 xff1a 安装pomelo 方式一 xff1a npm install pomelo g 方式二 xff1a g
  • pomelo源码解析--启动项目(pomelo start)

    我们知道启动pomelo服务器是命令pomelo start xff0c 那执行pomelo start到底都做了些什么 xff1f 服务器之间是怎么连接的 xff1f 客户端是怎么给服务器发消息的 xff1f 下面我们通过源码一步步来展开
  • 博客迁移 https://cxx001.gitee.io

    博客新地址 xff1a https cxx001 gitee io
  • OpenGL--粒子系统

    理论基础 1 xff0c 粒子系统的基本思想是用许多形状简单且赋予生命的微小粒子作为基本元素来表示物体 一般由点或很小的多边形通过纹理贴图表示 xff0c 侧重于物体的总体形态和特征的动态变化 把物体定义为许多不规则 xff0c 随机分布的
  • Cocos2dx-- 聊天系统之富文本(RichText)与字体对齐

    前言 游戏开发中我们一般都会有聊天系统 xff0c 我们可以同时或单独发文字 xff0c 图片 xff0c 表情 xff0c 超链接等信息的文本即称为富文本 如下图所示 xff1a 我使用的是cocos 3 4引擎版本里的RichText富
  • OpenGL--天空盒

    理论基础 1 xff0c 目前虚拟场景中天空建模常用的方法有天空顶 SkyDome 半球形 和天空盒 SkyBox 长方体 两种方法 其本质都是摄像机处在一个盒子中间 xff0c 这个盒子通过纹理贴图形成的虚拟世界场景 其中天空盒绘制技术非
  • OpenGL--使用Shader

    创建Shader 关于在OpenGL中怎么创建Shader这个在很早我博客中就有过详细介绍了 这里全当复习 xff0c 温故而知新 xff5e 在OpenGL中 xff0c 存在Program和Shader两个概念 xff0c Progra
  • 轻松学习CAN总线系列---3.CAN数据遵循的格式

    CAN帧 帧类型数据帧远程帧寻址CRC和应答位填充 帧类型 数据帧 xff08 Data frame xff09 为传输用户数据 xff0c ISO 11898 1定义了数据帧 数据帧可以传输的最大有效负载为八个字节 xff0c 即数据场
  • 无法解析的外部符号 "public: virtual struct CRuntimeClass

    无法解析的外部符号 34 public virtual struct CRuntimeClass thiscall CMessageBox GetRuntimeClass void const 34 以下原因是会引起上述错误的 xff1a
  • Qt控件美化 用好CSS/QSS可视化工具

    一 CSS概念 级联样式表 CSS 包含应用于网页中的元素的样式规则 CSS 样式定义元素的显示方式以及元素在页中的放置位置 可以创建一个通用规则 xff0c 只要 Web 浏览器遇到一个元素实例 xff0c 或遇到一个分配给某个特定样式类
  • c/c++中的struct和class的区别

    主要有两种情况 xff1a 1 C语言中的struct和c 43 43 中的class区别 2 c 43 43 中的struct和c 43 43 中的class的区别 下面分别介绍 xff1a 1 C语言中的struct和c 43 43 中