首页 > 编程语言 >c++ struct和class

c++ struct和class

时间:2023-04-05 19:00:45浏览次数:45  
标签:struct 成员 默认 c++ class 模板

c++中对象通常用struct和class表示。

在c语言中,struct用来创建结构体,结构体中只能包含基本数据成员。

而在c++中struct能包含成员函数,能实现多态(继承)。

c++中struct和class的功能十分类似,但是在面向对象的过程中class的使用较多,两者的区别如下:

struct与class的主要区别在于默认权限方面:

class的成员默认权限为private,struct的成员默认权限为public。因此在主函数中可以直接通过stu1.m_name来访问到Student的成员变量。
class的继承默认是private继承,struct的继承默认是公有继承。

struct作为数据结构的实现体,它默认的数据访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的
除此之外,在模板的使用方面:

class可以作为一个关键字定义模板参数(与typename作用一样),而struct不可以
class和struct都可以使用模板。比如STL中的很多容器就用到了模板结构体。

 

参考文章https://blog.csdn.net/Kallou/article/details/124476706?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-124476706-blog-50602648.235^v27^pc_relevant_3mothn_strategy_and_data_recovery&spm=1001.2101.3001.4242.1&utm_relevant_index=3

标签:struct,成员,默认,c++,class,模板
From: https://www.cnblogs.com/Explosion556/p/17290447.html

相关文章

  • C++函数库——全排列
    全排列,顾名思义,对一个无序数组或者有序数组写出其对应的所有组合,实则为从当前数组顺序开始,排列出所有比当前序列大(默认)或者小的所有组合,所以如果初始为无序数组,则得到的结果并非所有组合1.next_permutation,获取下一个排列结果,及获取比当前序列小的下一个序列1#include<iost......
  • c++ std::variant
    std::variant是c++17引入的一个类型,其作用类似于C语言中的Union,但是比Union的功能强大的多。C语言中一个联合体Union可以储存多种类型数据,但缺点有很多。比如:1没有可用的方法来判断Union中真实储存的类型,获取值时也是内存拷贝的结果,可能会存在问题。这就只能靠程序员人脑保证......
  • 2.Visual studio的使用和C++的基础
    visualstudio的基础介绍C++入门编程C++关键字、标识符C++基本数据类型变量的定义visualstudio的基础介绍解决方案资源管理器 也可以在”视图”中找到”解决方案资源管理器” “.h”:头文件;“.cpp”:源文件添加新建项,选择C++语言  运行程序,或"ctrl+F5“ ......
  • C++中的左值和右值
    左值与右值左值和右值有如下3个规则:左值和右值都是表达式。左值是对象定位器,理论上左值指示指示一个对象。右值是一个临时值,其他位置无法访问这个值,通常情况下在语句执行完成后右值就被丢弃。http://c.biancheng.net/view/281.html左值:可以进行取地址的称为左值。右值:不......
  • C++复习-第一天
    C++支持完全面向对象的程序设计,包括面向对象开发的四大特性:封装;抽象;继承;多态。C++封装 C++抽象 C++继承 C++多态多态的实现方式分为三块:重载,重写,重定义。1.重载是指在同一作用域下,具有相同函数名称不同的参数类型,或不同的参数个数,或不同的返回类型。2.重写是指在......
  • 【论文笔记 - InstructPix2Pix】InstructPix2Pix: Learning to Follow Image Editing
    InstructPix2Pix和Pix2Pix是两码事。Pix2Pix使用的是GAN,而InstructPix2Pix使用的是Diffusion。这个名字的由来可能出于两个方面,一方面InstructPix2Pix允许在image-translation的时候引入文本Instruction,另一方面InstructPix2Pix和Pix2Pix一样使用了成对的数据进行训练。鉴于目前图......
  • C++库封装JNI接口——实现java调用c++
    1.JNI原理概述通常为了更加灵活高效地实现计算逻辑,我们一般使用C/C++实现,编译为动态库,并为其设置C接口和C++接口。用C++实现的一个库其实是一个或多个类的简单编译链接产物。然后暴露其实现类构造方法和纯虚接口类。这样就可以通过多态调用到库内部的实现类及其成员方法。进一步......
  • 关于我用ai做了一点c++开发这件事
    简介C++一直不是我的主力编程语言,何况众所周知C++学习曲线之陡峭,尽管如此我还是动了挑战一下用ai写一下c++程序的念头,事实证明ai非常高效的帮助我完成了我的目标,在大概7个小时的工作时间里帮助我写完了一个简单的汇编器,我目前主要使用newbing作为ai助手,我们的完整QA如下:QA过程......
  • UE5 修复 C++ 代码里的中文在蓝图中显示为乱码的问题
    1.打开VS2019,依次点击扩展->管理扩展,搜索“UTF8”,安装后源码文件会强制保存为UTF-8。注:可能需要重新保存一下,但是只要保存文件的动作生效就会自动检测-转换编码。 2.使用示例    ......
  • java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/ConditionalTagSuppor
    1.报错截图2.问题原因缺少对应的类3.问题解决<dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency><......