18-C++类与对象

2023-11-05

1、类和对象

C++面向对象的三大特性为:封装、继承、多态 >

1、封装

class 类名{访问权限: 属性 / 行为 }

#include <iostream>
#include<string>
using namespace std;

const double PI=3.1415926;
//设计一个计算圆周长的类 
class Circle
{
	//访问权限
public:
	//属性
	int m_r;
	//行为 
	double calculate()
	{
		return 2*PI*m_r;
	}
	
 } ;
int main()
{
	//通过圆类,创建具体的圆
	Circle cl;
	 cl.m_r=10;
	 cout<<"圆的周长为: "<<cl.calculate()<<endl;
}

2、封装实例

类中的属性和行为 我们统一称为 成员

属性也称为 成员属性 成员变量

//行为 也称为 成员函数 成员方法

#include <iostream>
#include<string>
using namespace std;

//定义一个学生的类 
class Student{
	public:
		//属性
		string name;
		int Id;
		
		//行为
		//显示姓名和学号 
		void ShowStudent()
		{
			cout<<"姓名: "<< name<<" 学号: "<<Id<<endl; 
		 } 
		
		//给姓名赋值
		void setName(string name1)
		{
			name=name1;
		 } 
}; 
int main()
{
	Student s1;
	s1.name="张三";
	s1.Id=123;
	s1.ShowStudent();
	
	s1.setName("李四");
	s1.ShowStudent();
}

3、访问的三种权限

1、public 公共权限

2、protected 保护权限

3、private 私有权限

4、struct和class区别

结构体struct 默认权限为 公告 public

类class 默认权限是 private

5、构造函数和析构函数

构造函数:(相当于初始化)主要作用在于创建对象时为对象的成员属性赋值[构造函数由编译器自动调用,无须手动调用。
析构函数:(相当于清理操作)主要作用在于对象销毁前系统自动调用,执行一 些清理工作。

构造函数语法:类名(){}
1.构造函数,没有返回值也不写void I
2.函数名称与类名相同
3.构造函数可以有参数,因此可以发生重载
4.程序在调用对象时候会自动调用构造,无须手动调用,而且只会调用一次

析构函数语法:举名(){}
1.析构函数,没有返回值也不写void
2.函数名称与类名相同,在名称前加上符号~
3.析构函数不可以有参数,因此不可以发生重载
4.程序在对象销毁前会自动调用析构,无须手动调用,而且只会调用一次

如果我们不写构造和析构函数,编译器会提供一个空的构造和析构函数

#include <iostream>
#include<string>
using namespace std;

class Person{
public:
	//1、构造函数
	 Person()
	 {
	 	cout<<"Person 构造函数的调用"<<endl;
	 }
	 
	 //2、析构函数
	 ~Person()
	 {
	 	cout<<"Person 析构函数的调用"<<endl;
	  } 
}; 
void test()
{
	Person p1;
}
int main()
{
	test();
}

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

18-C++类与对象 的相关文章

  • 使用 TCP 套接字在本地代理视频

    我一直对向媒体浏览器添加对视频播客的支持非常感兴趣 我希望用户能够浏览可用的视频播客并从互联网上流式传输它们 这真的很容易 因为媒体播放器等将愉快地播放存在于云中的文件 问题是我想在本地缓存这些文件 因此同一集的后续观看将不涉及流式传输 而
  • 如何在 Caliburn.Micro 中使用 Conductor 的依赖注入

    我有时用Caliburn Micro http caliburnmicro com创建应用程序 使用最简单的 BootStrapper 我可以像这样使用 IoC 容器 SimpleContainer private SimpleContai
  • 将 ARGB 拆分为字节值

    我有一个 ARGB 值存储为 int 类型 它是通过调用 ToArgb 来存储的 我现在想要来自 int 值的各个颜色通道的字节值 例如 int mycolor 16744448 byte r g b a GetBytesFromColor
  • 如何转发声明要在 unique_ptr 的标准容器中使用的类

    在智能指针的标准容器中使用它时 是否可以避免完整的类定义可见 例如 我无法编译以下内容 include
  • Monitor.Pulse & Wait - 意外行为

    http www codeproject com Articles 28785 Thread synchronization Wait and Pulse demystified http www codeproject com Artic
  • .NET 中的 Class.forName() 等效项?

    动态获取对象类型然后创建它的新实例的 C 方法是什么 例如 如何在 C 中实现以下 Java 代码的结果 MyClass x MyClass Class forName classes MyChildClass newInstance Lo
  • 值类型如何实现引用类型

    我遇到了一个值类型正在实现 ref 的场景 类型 只是想知道这怎么可能 幕后发生了什么 结构体是值类型 接口是引用 类型但结构可以实现接口而不会出现任何错误 有什么想法吗 提前致谢 实际上 它同时以两种不同的方式进行 首先 任何值类型都可以
  • 析构函数与成员函数竞赛

    当我在析构函数内时 其他线程是否可能开始执行对象的成员函数 遇到这种情况该如何处理呢 C 没有内在的保护来防止在删除对象后使用它 忘记竞争条件 另一个线程可以在完全删除你的对象后使用你的对象 Either 确保只有一个位置 代码拥有该对象
  • C 链表销毁函数

    我正在尝试学习 C 和很多人一样 我对指针有点困惑 无论如何 我创建了一个递归函数来销毁我的链表 但是正如我调试的那样 当我从函数返回时 列表的头部不应该为空 所以我猜这是对指针的一些基本误解 这是函数 void destroy struc
  • UI 线程正在阻塞调用 COM 对象的后台线程

    我正在开发一个通过第三方 COM 库与外部设备通信的应用程序 我试图让与设备的所有通信都通过后台线程 以防止通信问题搞砸我的应用程序 并消除在 UI 线程中进行通信所引入的一些其他复杂性 问题是 每当发生导致主 UI 线程阻塞的情况 即调用
  • 有没有办法找到dll公开的所有函数

    我一直在寻找一种方法来获取映射到 dll 中函数名称的所有字符串 我的意思是您可以调用 GetProcAddress 的所有字符串 如果你对 dll 进行十六进制转储 符号 字符串 就在那里 但我认为必须有一个系统调用来获取这些名称 如果您
  • “DeploymentItem”属性是什么意思?

    假设我们有一个简短的程序 namespace ConsoleTryIt static class Program static void Main string args var sum Add 1 2 private static int
  • 如何将 Boost Spirit 自动规则与 AST 结合使用?

    编辑 当我想在另一个规则上使用它时 我扩展了 sehe 的示例以显示问题 http liveworkspace org code 22lxL7 http liveworkspace org code 22lxL7 17 我正在尝试提高 Bo
  • Rx 在不同的线程上生产和消费

    我试图通过此处的示例代码来简化我的问题 我有一个生产者线程不断地输入数据 并且我尝试在批次之间添加时间延迟来对其进行批处理 以便 UI 有时间渲染它 但结果并不如预期 生产者和消费者似乎在同一个线程上 我不希望批处理缓冲区在正在生成的线程上
  • 使用“const cv::Mat &”、“cv::Mat &”、“cv::Mat”或“const cv::Mat”作为函数参数的区别?

    我已经彻底搜索过 但没有找到一个简单的答案 传递 opencv 矩阵 cv Mat 作为函数的参数 我们传递一个智能指针 我们对函数内部的输入矩阵所做的任何更改也会改变函数范围之外的矩阵 我读到 通过将矩阵作为 const 引用传递 它不会
  • C中使用JNI从对象获取对象

    public class Student private People people private Result result private int amount 这是 Java 中类的示例 在C中 我试图获取 学生 中的 人 但失败了
  • 如何在 stl 模板中使用导出类 (__declspec(dllexport))?

    我正在使用导出的类 class declspec dllexport myclass private template declspec dllexport class std map
  • 从数据库配置中的连接字符串中删除 SSIS 密码

    我有一个 SSIS 包 它使用 SQL 服务器中的 SSIS 配置表来检索 OLE DB 连接管理器的连接字符串属性 问题是我还需要相同的连接字符串来调用使用实体框架的程序集 我尝试访问连接管理器连接字符串属性 但 SSIS 总是删除密码
  • 如何使用实体框架设置连接字符串

    我将 EF6 与 MySQL 结合使用 并有一个用于多个数据库的模型 我希望能够在我的表单中设置连接设置 如何以编程方式设置模型的连接字符串 你应该使用EntityConnectionFactory这就是您所需要的 public strin
  • 为什么 INT64_MIN 的定义不同?为什么他们的行为不同?

    The stdint h我公司的标题是 define INT64 MIN 9223372036854775808LL 但在我项目的一些代码中 一位程序员写道 undef INT64 MIN define INT64 MIN 92233720

随机推荐

  • Python如何将字符串(str/json)转换字典(dict)

    一 字符串str转为字典dict 1 使用json进行转换 import json a a 1 b 1 c json loads a print c type c 输出 a 1 c 1
  • GraphQL 中文 -- 一份不标准不专业的翻译

    请移步我的 Github 查看翻译 如有翻译不恰当的地方欢迎指正
  • python 实现GUI(图形用户界面)编程

    Python支持多种图形界面的第三方库 包括 wxWidgets Qt GTK Tkinter Tkinter 模块 Tk 接口 是 Python 的标准 Tk GUI 工具包的接口 Tk 和 Tkinter 可以在大多数的 Unix 平台
  • Springboot整合Swagger2(3.0.0版本)

    天行健 君子以自强不息 地势坤 君子以厚德载物 每个人都有惰性 但不断学习是好好生活的根本 共勉 文章均为学习整理笔记 分享记录为主 如有错误请指正 共同学习进步 文章目录 Swagger2简介 开发环境 实现步骤说明 1 搭建项目 2 引
  • JxBrowser Java浏览器控件

    关键字 JxBrowser能在Windows Linux Mac OS X Intel and PPC based 平台上将Mozilla Firefox浏览器完美地整合到Java AWT Swing应用程序里 该库程序使用Gecko设计引
  • win7/win10电脑屏幕录像工具?

    目前windows系统中 windows 7系统是没有自带的录屏软件 windows 10系统也是对电脑型号有要求 所以在录屏的时候 就需要通过其他三方工具去处理 下载安装 一款优质录屏软件可以给我们的工作以及生活带来不少的便捷 QVE屏幕
  • linux 查看定时任务

    输入cd var spool cron命令 输入ls命令列出cron目录下的定时任务 vi 查看
  • 强制tensorflow使用cpu

    one start import tensorflow as tf cpu tf config list physical devices CPU tf config set visible devices cpu print tf con
  • Java 中SimpleDateFormat类的使用

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 SimpleDateFormat类的介绍 SimpleDateFormat类是一个具体的类 用于以区域设置敏感的方式格式化和解析日期 日
  • VirtualAPK 详解和使用,真牛

    3 1 基本原理 合并宿主和插件的ClassLoader 需要注意的是 插件中的类不可以和宿主重复 合并插件和宿主的资源 重设插件资源的packageId 将插件资源和宿主资源合并 去除插件包对宿主的引用 构建时通过Gradle插件去除插件
  • jeesite整合单点登录

    1 什么是单点登录 单点登录SSO Single Sign On 实际上就是用户在一个系统登录之后 在单点登录的其他客户端 应用 不用重复的登陆 登陆校验交给中央认证服务器去校验 单点登录的应用场景通常为一个大型的系统下有很多小系统 并且这
  • 数据结构之双链表(c语言附完整代码)

    文章目录 一 定义 二 基本运算 三 完整代码 一 定义 双向链表也叫双链表 是链表的一种 它的每个数据结点中都有两个指针 分别指向直接后继和直接前驱 所以 从双向链表中的任意一个结点开始 都可以很方便地访问它的前驱结点和后继结点 示意图
  • Confluence 7 如何修改启动内存

    和 Java 有关的项目通常和内存都有关 最近我们的 Confluence 平台经常挂起 通常的原因可能是内存溢出 在对 Confluence 进行调整之前 需要先查看下内存的配置情况 内存信息 在 Confluence 中 你可以查看当前
  • 【Java】垃圾回收

    目录 概述 什么是垃圾 Garbage 想要学习GC 首先需要理解为什么需要GC Java 垃圾回收机制 Java自动内存管理的优点 关于自动内存管理的担忧 GC 的作用区域 垃圾回收相关算法 重要 标记阶段 引用计数器算法和可达性分析算法
  • Dino 404

    未压缩的版本 可在此处改写 然后到https tool lu html 进行压缩
  • 人大金仓解决授权文件license过期问题

    错误描述 FATAL license file expired 查询授权文件过期时间 SELECT GET LICENSE VALIDDAYS 如果过期了需要替换 license 文件 从官网下载企业版或者专业版授权文件 官网下载地址 li
  • c++ map、multimap 的使用方法

    一 Map是c 的一个标准容器 它提供了很好一对一的关系 在一些程序中建立一个map可以起到事半功倍的效果 总结了一些map基本简单实用的操作 1 map构造函数 map
  • BUCK/BOOST电路原理分析

    Buck变换器 也称降压式变换器 是一种输出电压小于输入电压的单管不隔离直流变换器 图中 Q为开关管 其驱动电压一般为PWM Pulse width modulaTIon脉宽调制 信号 信号周期为Ts 则信号频率为f 1 Ts 导通时间为T
  • CSS 垂直居中

    直接上代码 justifyContent center 长度居中 display flex alignItems center 高度居中
  • 18-C++类与对象

    1 类和对象 C 面向对象的三大特性为 封装 继承 多态 gt 1 封装 class 类名 访问权限 属性 行为 include