首页 > 编程语言 >C++_类和结构体

C++_类和结构体

时间:2023-01-04 16:14:38浏览次数:48  
标签:函数 实现 成员 C++ 声明 class 结构

面向对象编程

类-abstraction

C++类和结构体

 三种类类型是结构、类和联合。 它们使用 struct、class 和 union 关键字进行声明。
 类和结构是用于定义你自己的类型的构造。 类和结构都可以包含数据成员和成员函数,
 概念: 匿名类类型。基类 派生类
     类声明
	 数据成员--data member
	 成员函数 member function (函数和运算符) 构造函数 析构函数 具名函数  重载运算符
	 初始化类成员 
 template class
 non-template class	 
	 
 基类的成员加上派生类添加的任何新成员组成
 
 关键字-- class 
 访问说明符(public、private、protected)和 virtual 关键字
  private	声明为 private 的类成员只能由类的成员函数和友元(类或函数)使用。
  protected	声明为 protected 的类成员可由类的成员函数和友元(类或函数)使用。 此外,它们还可由派生自该类的类使用。
  public	声明为 public 的类成员可由任意函数使用。
 
 公共静态成员仍是可访问的。 但是,使用指针、引用或对象访问基类的成员需要转换,此时将再次应用访问控制 
 
 适用于 virtual 函数的访问控制是由用于进行函数调用的类型决定的。 重写函数的声明不会影响给定类型的访问控制
 
 如果类型具有隐式或显式声明的默认构造函数,你可以使用大括号初始化(具有空大括号)对其进行调用。
 例如,可通过使用空大括号和非空大括号初始化来初始化以下 
 
  Pimpl 是“指向实现的指针”的缩写。

C++ class

 class 声明 class Stack; 前置声明-告诉编译器
 class 定义	 class 声明+ 一对大括号括住的主体和分号结尾
    成员函数必须在主体内进行声明,
	 如果在主体内定义,则member function 自动视为inline函数-内联函数
	 如果在主体外定义,这成员函数需要加上类作用域解析符以及类名
	 inline member function
	 non-inline member function 
	 
	 构造函数--没有返回值和class名称相同--可以被重载 overloaded,default没有参数的析构函数,不带括号
	            如果我们不提供构造和析构,编译器会提供默认的空实现构造和析构 
	         -- 成员初始化列表
			 
			 
	C++标准库中的相关类声明中explicit出现的频率是很高的, explicit 为清晰的;明确的之意.顾名思义,关键字explicit可以阻止隐式转换的发生.
    类的声明和定义分别在两个文件中时,explicit只能写在在声明中,不能写在定义中		

C++声明和实现分离

声明 + 实现 + 使用
 在C++中,数据结构及函数的声明与实现进行分离的方式有两种:①.h、.cpp;②.hpp。
   .hpp文件是Header Plus Plus的简写
     .hpp文件是C++程序的头文件 .hpp文件一般是模板类的头文件
 在①中,.h用于数据结构及函数的声明;.cpp用于数据结构的初始化及函数的具体实现。
 在②中,.hpp即负责数据结构及函数的声明,同时负责数据结构的初始化及其函数的具体实现
   .hpp文件的使用场景中,由于定义与实现都已经存在于一个文件,调用者必需明确知道被调用者的所有定义,而不能等到.cpp中去编译

C++结构体

    在 C 中,必须显式使用 struct 关键字来声明结构。 在 C++ 中,不需要在定义该类型之后使用 struct 关键字
 在c++中 struct 和 class 唯一的区别就在于默认的访问权限不同	 struct: 默认权限为公共 class: 默认权限为私有

java面向对象

1.封装 :把该隐藏的隐藏起来,把该暴露的暴露出来--Java提供的访问控制符来实现
 01.属性私有,方法封装
   this用来访问类成员变量,用于区分类成员变量和方法中的参数
   static修饰的方法中不能用this引用,并且Java语法规定,静态成员不能直接访问非静态成员
 02.接口将方法声明与实现分离,一个接口可以有多个实现类,一个类也可以实现多个接口。
  接口和实现分开或者说只对外公布用户要使用的接口, 而其实现则对用户隐藏起来. 这是一个框架应该做的事情, 也是Java的一个重要特性 —— 封装.
    实现接口用implements关键字	
2.继承
   继承的语法形式是class 子类名 extends 父类名,继承类就是子类,也叫派生类,被继承的类称为父类,基类或者超类	
     super 关键字  this 
	 抽象类是指被abstract修饰,包含抽象方法的类
	 抽象方法
     当一个普通类继承一个抽象类的时候需要重写抽象类的所有抽象方法,如果不想重写的话就需要声明为抽象类		 
3.多态
   用接口实现多态 java实现接口和继承类的一个很大区别就是一个类只能继承一个类,但是一个类可以实现多个接口

参考

 C++ Primer plus

标签:函数,实现,成员,C++,声明,class,结构
From: https://www.cnblogs.com/ytwang/p/17025133.html

相关文章

  • 算法与数据结构 学习流程
    嵌入式LINUX中算法与数据结构应用比较广泛,需要学习及熟练掌握:  推荐一些算法书籍。入门系列入门的同学,我建议你不要过度追求上去就看经典书。不要一来就拿着《算......
  • C++ invoks Python ~ int64_t and __int64
     #include<Python.h>intmain(){return}利用如上代码(cpppython.cc)测试C++调用python(version2.6.2),g++编译出现如下错误:通过错误可知__int64不是C++的支持的整型类......
  • C/C++球场预约信息管理系统
    C/C++球场预约信息管理系统四、设计基本要求1.只能使用C语言编程,除能使用平台所带的系统标准函数外,不能使用第三方的软件包2.要有使用多级文本菜单界面,3.要有良......
  • 《安富莱嵌入式周报》第294期:将C/C++代码转换为各种高级语言,超炫渲染着色器,VS2022新闻
    ​​​​更新视频教程:USB应用实战视频教程第5期:手把手玩转USBHID免驱方式下位机和QT6.4上位机开发上篇视频版:​​https://www.bilibili.com/video/BV1MK41197wC​​1、将C/......
  • 类与结构体
    1.区别与应用 2.示例structA{};classB:A{};//private继承structC:B{};//public继承structA//定义一个struct{charc1;intn2;doubledb3;};Aa=......
  • 【C++】以最快的速度求一个数的因数之和
    源代码: #include<iostream>usingnamespacestd;intmain(){inta,b=0;cin>>a;for(inti=2;i<a;i++){if(a%i==0){b+=i;......
  • 「java技术干货」switch分支结构详解
    前言在上一篇文章中,壹哥给大家介绍了Java里的顺序、分支、循环结构的概念,并且重点给大家讲解了分支结构中的条件分支。并在条件分支中,详细地给大家讲解了if条件分支的使用......
  • C++_控制结构和pipeline
    控制结构过程式编程范式叫做——指令式编程,而把函数式编程范式叫做——声明式编程过程式编程范式控制结构允许程序根据不同的状态、条件和参数来选择不同的处理和执行......
  • 工厂模式C++实现 (内附简单源码实现)
    抽象工厂模式为什么要用抽象工厂模式?*举个实际应用的例子,一个显示器电路板厂商,旗下的显示器电路板种类有非液晶的和液晶的;这个时候,厂商建造两个工厂,工厂A负责生产非......
  • C++ | 4-易用性改进
    使用auto自动类型推断,顾名思义,就是编译器能够根据表达式的类型,自动决定变量的类型(从C++14开始,还有函数的返回类型),不再需要程序员手工声明。但需要说明的是,auto并没有......