Linux系统下imx6ull QT编程—— C++类和对象(三)

news/2024/12/13 1:00:29/

Linux QT编程

`

文章目录

  • Linux QT编程
  • 一、类和对象


一、类和对象

C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。
打个比方说明一下什么是类,比如有一条小狗,小狗有名字叫旺财,旺财的年龄是 2 岁,同时旺财会汪汪的叫,也能跑。我们统称狗这个为类,类是我们抽象出来的,因为狗不只有上面的属性,还有体重,毛发的颜色等等,我们只抽象出几种属性成一个类。具体到哪条狗就叫
对象。
从类中实例化对象分两种方法,一种是从栈中实例化对象,一种是从堆中实例化对象。
在 Ubuntu 上编辑一个 03_class_dog_example 目录,在 03_class_dog_example 目录下新建
一个 03_class_dog_example.cpp 文件

1 #include <iostream>
2 #include <string>
3 using namespace std;
4
5 class Dog
6 {
7 public:
8 string name;
9 int age;
10
11 void run() {
12 cout<<"小狗的名字是:"<<name<<","<<"年龄是"<<age<<endl;
13 }
14 };
15
16 int main()
17 {
18 Dog dog1;
19
20 dog1.name = "旺财";
21 dog1.age = 2;
22 dog1.run();
23
24 Dog *dog2 = new Dog();
25
26 if (NULL == dog2) {
27 return 0;
28 }
29 dog2->name = "富贵";
30 dog2->age = 1;
31 dog2->run();
32
33
34 delete dog2;
35 dog2 = NULL;
36 return 0;
37 }

第 5 行,定义了一个 Dog 狗,定义类时,起的类名要尽量贴近这个类,让人一看就明白,您这个类是做什么的。
第 7 行,访问限定符 public(公有的),此外还有 private(私有的)和 protected(受保护的)。写这个的目的是为了下面我们要调用这些成员,不写访问限定符默认是 private。关于访问限定
符,简单的来说,访问限定符就是设置一个成员变量和成员函数的访问权限而已.
第 8 至 11 行,定义了一个字符串变量 name,整形变量 age。和一个方法 run()。我们在这个 run()里打印相应的狗名和狗的年龄。PS:string 是 C++的数据类型,方便好用,使用频率相当高。
第 18 行,从栈中实例化一个对象 dog1(可以随意起名字)。
第 20 至 22 行,为 dog1 的成员变量赋值,dog1 的 name 赋值叫“旺财”,年龄为 2 岁。然后调用 run()方法,打印 dog1 的相关变量的信息。
第 24 行,从堆中实例化对象,使用关键字 new 的都是从堆中实例化对象。
第 26 行,从堆中实例化对象需要开辟内存,指针会指向那个内存,如果 new 没有申请内存成功,p 即指向 NULL,程序就自动退出,下面的就不执行了,写这个是为了严谨。
第 29 至 31 行,和 dog1 一样,为 dog2 的成员赋值。
第 34 和 35 行,释放内存,将 dog2 重新指向 NULL
在这里插入图片描述
然后编译运行
在这里插入图片描述
(刚才的代码里少了一个;)
通过上面的例子我们已经知道了什么是类,和什么是对象。以描述 Dog 为一类(抽象出来的),从 Dog 类中实例出来就是对象(实际事物)。对象拥有 Dog 类里的属性,可以从栈中实例化对象,亦可从堆中实例化对象。


http://www.ppmy.cn/news/109848.html

相关文章

Java革命性ORM框架Jimmer简单介绍

首发于Enaium的个人博客 本文使用Jimmer的官方用例来介绍Jimmer的使用方法,Jimmer同时支持Java和Kotlin,本文使用Java来介绍,实际上Kotlin比Java使用起来更方便,这里为了方便大家理解,使用Java来介绍,本篇文章只是对Jimmer的一个简单介绍,更多的内容请参考官方文档 这里开始就…

代码随想录算法训练营第四十二天|0/1背包问题理论基础 416. 分割等和子集

目录 0/1背包问题理论基础 二维dp数组 一维dp数组 LeeCode 416. 分割等和子集 0/1背包问题理论基础 二维dp数组 动规五部曲 1.确定dp数组及下标含义: dp[i][j] : 从下标为[0-i]的物品里任意取&#xff0c;放进容量为j的背包&#xff0c;价值总和的最大值&#xff1b; 2…

Flutter问题记录 - TextField组件多行提示文本显示不全

文章目录 前言开发环境问题描述问题分析解决方案最后 前言 梳理Flutter项目的过程中发现还有一些遗留的TODO没处理&#xff0c;其中有一个和TextField组件相关。 开发环境 Flutter: 3.10.1Dart: 3.0.1 问题描述 TextField组件设置maxLines: null不限制行数&#xff0c;同时…

elementUI中<el-select>下拉框选项过多的页面优化方案——多列选择

效果展示(多列可以配置) 一、icon下拉框的多列选择&#xff1a; 二、常规、通用下拉框的多列选择&#xff1a; 【注】第二种常规、通用下拉框的多列选择&#xff0c;是在第一种的前端代码上删除几行代码就行&#xff08;把icon显示标签删去&#xff09;&#xff0c;所以下面着重…

root 密码破解(rd.break)

在Linux系统中&#xff0c;忘记root密码时&#xff0c;可以用此方法进行暴力修改root密码 示例&#xff1a; 设置一个新的记不住的密码 $ echo cnakdnvf | passwd --stdin root $ poweroff 1.启动此虚拟机&#xff0c;选中以下行&#xff0c;并按 【 e 】进入内核编辑页面 …

数据库服务器

数据库服务器&#xff0c;联系Web服务器与DBMS的中间件是负责处理所有的应用程序服务器&#xff0c;包括在web服务器和后台的应用程序或数据库之间的事务处理和数据访问。 基本信息 中文名 数据库服务器 外文名 database server 功能 数据库服务器建立在数据库系统基础上&a…

pycharm内置Git操作失败的原因

文章目录 问题简介解决方案DNS缓存机制知识的自我理解 问题简介 最近在pycharm中进行代码改动递交的时候&#xff0c;总是出现了连接超时或者推送被rejected的情况&#xff0c;本以为是开了代理导致的&#xff0c;但是关闭后还是推送失败&#xff0c;于是上网查了以后&#xf…

微信小程序授权登录

微信小程序—授权登录 一、小程序登录 登录流程时序 说明: 1.小程序端调用 wx.login() 获取临时登录凭证code &#xff0c;并回传到开发者服务器。 2.服务器调用 code2Session 接口&#xff0c;换取 用户唯一标识 OpenID 和 会话密钥 session_key。 之后开发者服务器可以根…