QT5_C++基础

1. 什么是类和对象

  1. C++的类是一种构造类型,与C语言的结构体类似,但是进行了一些拓展,类的成员不但可以是变量,还可以是函数;通过类定义出来的变量也有特定的称呼,叫做“对象”
  2. 类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量,创建对象的过程也叫做类的实例化

2. 类的模板

class Class_name{public:共有的数据;protected:保护的数据;private:私有的数据;
};

Class_name的首写字母是大写的
C++通过public、protect和private三个关键字来控制成员变量和成员函数的访问权限,它们分别表示共有的、受保护的和私有的,被成为成员访问限定符。

3. 堆和栈

#include <iostream>using namespace std;
class Dog{//private is default
public:string name;int age;void run(){cout << "xyxy" << endl;}
protected:double weight;
};int main(){cout << "inst object from stack" << endl;Dog dog1;dog1.name="wangcai";dog1.run();cout << dog1.name << endl;cout << "inst object from team" << endl;Dog *dog2 = new Dog;dog2->age = 3;cout << dog2->age << endl;delete dog2;return 0;
}
#include <iostream>using namespace std;class Dog{
public:Dog(){cout << "GouZao" << endl;}~Dog(){cout << "XiGou" << endl;}
};//Dog::~Dog(){
//    cout << "XiGou" << endl;
//}
int main(){//Dog dog1;Dog *dog2 = new Dog;delete dog2;return 0;
}

对于堆的分配,析构函数会在delect释放后再执行,如果不释放堆的内存,析构函数不会被执行
在类实例化对象的时候,如果没有定义构造函数,则编译器会合成一个默认的构造函数
当有了对象以后,如果没有定义析构函数,则编译器会合成一个默认的析构函数

5. 类的继承

  • 创建新类的时候,并不需要创建全新的数据和成员,我们可以指明这个新类继承现有类的成员。此时,现有的类称为“基类”,继承实现的新类称为“派生类”
  • 公有继承时基类中各成员属性保持不变,基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象只能访问基类中的public成员。
  • 保护继承时基类中各成员属性均变为protected,并且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员
  • 私有继承时基类中各成员属性均变为private,并且基类中private成员被隐藏。派生类的成员也只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。

6. 重载函数

在同一个作用域内,声明几个功能类似的同名函数,并且这些同名函数的参数个数、参数类型或者参数顺序不同,或者函数返回类型不同,那么就叫函数重载。

#include <iostream>using namespace std;//class Dog{
//public:
//    Dog(int weight){
//        cout << "int Dog's weight" << weight << endl;
//    };
//    Dog(double weight){
//        cout << "double Dog's weight" << weight << endl;
//    };
//};//int main()
//{
//    Dog dog1(50);
//    Dog dog2(50.5);
//    return 0;
//}
class Dog{
public:void getWeight(string color,int weight){cout << "int Dog's weight:" << weight << endl;}double getWeight(double weight){cout << "double Dog's weight:" << weight << endl;return weight;}
};int main()
{Dog dog1;dog1.getWeight("black",12);dog1.getWeight(12.5);return 0;
}

重构是对程序内部的架构的调整。重构强调的是在不改变"软件外部可观察的行为"前提下,对内部结构进行调整,使得从程序的外部功能上看,没有任何变化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/47569.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【java】力扣 合法分割的最小下标

文章目录 题目链接题目描述思路代码 题目链接 2780.合法分割的最小下标 题目描述 思路 这道题是摩尔算法的一种扩展 我们先可以找到候选人出来&#xff0c;然后去计算他在左右两边元素出现的次数&#xff0c;只有当他左边时&#xff0c;左边出现的次数2 >左边的长度&…

【 LCD1602显示屏】使用STC89C51控制1602显示、读写操作时序

文章目录 LCD1602显示概述&#xff1a;引脚说明控制指令接线 控制思路步骤 代码示例总结对databuffer dataShow;的理解 LCD1602显示 概述&#xff1a; LCD1602&#xff08;Liquid Crystal Display&#xff09;是一种工业字符型液晶&#xff0c;能够同时显示 1602 即 32 字符…

Android Studio的xml文件的layout布局,在添加属性的过程中,没有自动补全代码问题的解决方案

在build.gradle文件中&#xff0c;把compileSdkVersion和targetSdkVersion两个参数改成32就好了。 参考&#xff1a;关于Android Studio的xml文件的layout布局&#xff0c;在添加属性的过程中&#xff0c;不显示提示词&#xff08;没有自动补全代码&#xff09;的问题的解决方…

SpringBoot增加网关服务

一、新建gateway项目 二、添加依赖 dependencies {implementation org.springframework.cloud:spring-cloud-starter-gateway:4.0.0 } 三、增加路由规则配置 一个web服务、一个service服务 bootstrap.yaml&#xff1a; server:port: 80 spring:application:name: gatewayc…

子树的重心

描述 输入一棵树,判断每一棵子树的重心是哪一个节点。 输入描述 第一行输入n,q。n表示树的节点个数&#xff0c;q表示询问次数 第二行n-1个数&#xff0c;分别表示从节点2开始&#xff0c;各节点的父亲节点。 后面q行&#xff0c;每行一个数x&#xff0c;表示询问当前以x为根…

【STM32 HAL库】I2S的使用

使用CubeIDE实现I2S发数据 1、配置I2S 我们的有效数据是32位的&#xff0c;使用飞利浦格式。 2、配置DMA **这里需要注意&#xff1a;**i2s的DR寄存器是16位的&#xff0c;如果需要发送32位的数据&#xff0c;是需要写两次DR寄存器的&#xff0c;所以DMA的外设数据宽度设置16…

入门C语言只需一个星期(星期二)

点击上方"蓝字"关注我们 01、算术运算符 int myNum = 100 + 50;int sum1 = 100 + 50; // 150 (100 + 50)int sum2 = sum1 + 250; // 400 (150 + 250)int sum3 = sum2 + sum2; // 800 (400 + 400) + 加 将两个值相加 x + y - 减 从另一个值中减去一个值 …

探索Python自然语言处理的新篇章:jionlp库介绍

探索Python自然语言处理的新篇章&#xff1a;jionlp库介绍 1. 背景&#xff1a;为什么选择jionlp&#xff1f; 在Python的生态中&#xff0c;自然语言处理&#xff08;NLP&#xff09;是一个活跃且不断发展的领域。jionlp是一个专注于中文自然语言处理的库&#xff0c;它提供了…

Ubuntu 安装 XRDP,替代系统自带RDP远程桌面

起因&#xff0c;Ubuntu的自带RDP远程桌面很好用&#xff0c;但很傻卵&#xff0c;必须登录。 而设置了自动登录也不能解开KEYRING&#xff0c;必须必须必须用GUI手动登录。 &#xff08;我远程我用头给你坐机子面前开显示器先登录&#xff1f;&#xff1f;&#xff09; 比起VN…

【HarmonyOS】HarmonyOS NEXT学习日记:三、初识ArkUI

【HarmonyOS】HarmonyOS NEXT学习日记&#xff1a;三、初识ArkUI 忘掉HTML和CSS&#xff0c;ArkUI里构建页面的最小单位就是 “组件”&#xff0c;所以今天的目标就是认识一些常用的基础组件&#xff0c;以及他们的用法&#xff0c;对ArkUI形成一个基本认识。 基本组成 了解…

重塑七星拼团模式:共创互赢新生态

在当今商业模式的洪流中&#xff0c;七星拼团模式凭借其创新的激励机制与深植的互助文化&#xff0c;独树一帜&#xff0c;成为了推动市场活跃与消费者参与的新引擎。本文将重新构思并阐述该模式的三大支柱——直推奖赏、滑落回馈与循环成就奖&#xff0c;同时深入探讨其互助逻…

获取不重复流水号(java)

一&#xff1a;概述 很多业务场景都需要获取不重复的业务流水号&#xff0c;当微服务项目或服务多节点部署时&#xff0c;获取流水号场景使用分布式锁性能低下&#xff0c;可以基于数据库行锁实现获取不重复流水号。 二&#xff1a;创建流水号数据库 CREATE TABLE serial (i…

(error) MOVED 12706 192.168.187.139:6379

Redis操作set、get等操作出现如下错误 (error) MOVED 12706 192.168.187.139:6379 这种情况一般是因为启动 redis-cli 时没有设置集群模式所导致&#xff1b; 在开启集群后&#xff0c;redis-cli用普通用户登录无法操作集群中的数据&#xff0c;需要加上-c 用集群模式登录才可…

网络故障处理及分析工具:Wireshark和Tcpdump集成

Wireshark 是一款免费的开源数据包嗅探器和网络协议分析器&#xff0c;已成为网络故障排除、分析和安全&#xff08;双向&#xff09;中不可或缺的工具。 本文深入探讨了充分利用 Wireshark 的功能、用途和实用技巧。 无论您是开发人员、安全专家&#xff0c;还是只是对网络操…

k8s集群 安装配置 Prometheus+grafana

k8s集群 安装配置 Prometheusgrafana k8s环境如下&#xff1a;机器规划&#xff1a; node-exporter组件安装和配置安装node-exporter通过node-exporter采集数据显示192.168.40.180主机cpu的使用情况显示192.168.40.180主机负载使用情况 Prometheus server安装和配置创建sa账号&…

liosam复现

写在前面&#xff1a; 本机系统ubuntu22.04dockernvidia docker的环境 本机系统已经安装好nvidia驱动和cuda 使用liosam提供的镜像在22.04下实在是无法兼容。 所以在rosnoetic&#xff08;ubuntu20.04&#xff09;下进行配置&#xff0c;本教程中rosnoetic:v3.2是在docker hub&…

飞凌全志T527开发板modbus移植使用教程

交叉编译 进入到源码目录&#xff0c;执行 ./configure ac_cv_func_malloc_0_nonnullyes --hostaarch64-none-linux-gnu --enable-static --prefix/home/feng/文档/development/Linux/application/OK527N/libmodbus-3.1.10/install/其中–host为交叉编译器的前缀&#xff1b;…

javascript闭包的理解

什么事闭包&#xff1f;个人理解 函数作为返回值或参数传递即为闭包 this: 在js中&#xff0c;this在定义时是无法确认的&#xff0c;只有在执行时才能确定值。 在js中是没有块级作用域的&#xff0c;js和C#、Java等语言不通&#xff0c;是一门解释性语言&#xff0c;这点需要…

layui 监听弹窗关闭并刷新父级table

记录&#xff1a;easyadmin 监听弹窗关闭并刷新父级table 场景一&#xff1a;在二级页面的table中点击编辑&#xff0c;保存后刷新二级页面的table edit: function () {ea.listen(function (data) {return data;}, function (res) {ea.msg.success(res.msg, function () {var …

巧用通义灵码助力护网面试

前言 前几年护网还算是一个比较敏感的话题&#xff0c;但是随着近段时间的常态化开始&#xff0c;护网行动也是逐渐走进了大众的视野&#xff0c;成为了社会各界共同关注的安全盛事。本篇也是受通义灵码备战求职季活动的启发&#xff0c;结合近期要开始的护网行动&#xff0c…