C++ 类的定义与使用

article/2025/3/19 22:34:21

十二、类与对象

对象:就是我们生活中的具体事物,看得见摸得到,有一定的属性和行为或操作方式

面向对象:是一种软件的开发方法,对象所指的是计算机系统中的某一个成分。在面向对象程序设计中,对象包含两个含义,其中一个是数据,另外一个是动作。对象则是数据和动作的结合体。对象不仅能够进行操作,同时还能够及时记录下操作结果

面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)的主要思想是把构成问题的各部分分解成各个对象,建立对象的目的是为了描叙一个事物在整个解决问题的步骤中的行为。面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些概念面向对象的思想得到了具体的体现。

其实就是一个对象,属于用户自己定义的数据类型,一个类也包含两部分类的属性和类的方法,类的方法也就是类的行为,实际上也就是类中封装的函数

类还分为基类和派生类

基类就是类对象固有的一些基本属性

派生类是属于类特有或延伸出来的属性

例如:人就是一个类,那么人的姓名、年龄等属于固有属性,这就是人的基类

           吃饭、睡觉这属于行为或者说方法

           那么有的人可能是学生,他还有学号、班级等特性是基类所没有的,这就是人的派生类

 十三、类的定义和实例化

1、类的一般语法形式

class 类名:继承方式 基类, ...{

访问控制限定符:

        类名(形参表);初始化列表{...} //构造函数

        ~类名(void){...}//析构函数

        返回类型 函数名(形参表){...}//成员函数

        数据类型 变量名;//成员变量

};

2、访问控制限定符

①public:公共的行为或属性,任何位置都可以访问使用

②private:私有的行为或属性,只有类自己的成员函数才能访问,类的外部是不可以访问的,不写访问控制限定符,默认是私有成员

#include<iostream>
using namespace std;
class Student{
public:int age;//年龄void setid(int id);//设置学号int getid(void);//获得学号private:int id;//私有成员学号
};
//成员函数的定义        
void Student::setid(int sid){id=sid;
}
int Student::getid(void){return id;
}
//主程序
int main(void){Student stu;//实例化一个对象stu.age=16;//ok,公有成员cout<<"age:"<<stu.age<<endl;//ok//stu.id=1;//error,私有变量不能访问stu.setid(1);//ok,成员函数可以访问cout<<"id:"<<stu.getid()<<endl;return 0;
}

③protected:受保护的成员,在派生类可访问

#include<iostream>
using namespace std;
class Student{
protected:int id;
};class SmallStudent:Student{//派生类
public:void setid(int sid);int getid(void);
};//成员函数的定义        
void SmallStudent::setid(int sid){id=sid;
}
int SmallStudent::getid(void){return id;
}
//主程序
int main(void){//Student stu;//实例化一个对象//stu.id=1;//error,受保护变量不能访问SmallStudent sstu;//子类被创建父类也就被创建了sstu.setid(1);//ok,成员函数可以访问cout<<"id:"<<sstu.getid()<<endl;return 0;
}

 3、构造函数(constructor)

①语法

class 类名{

        类名(形参表){//负责初始化对象(初始化成员变量)}

};

②函数名字与类名相同,且无返回类型

③构造函数在创建时自动被调用,不能像普通成员函数一样显式的调用

注:在每个对象的生命周期,构造函数一定会被调用,但只会被调用一次

#include<iostream>
using namespace std;
class Student{
public:Student(const string&name,int age,int no){//构造函数cout<<"construct func"<<endl;m_name=name;m_age=age;m_nu=no;}void who(void){cout<<"i am "<<m_name<<",age:"<<m_age<<",inode:"<<m_nu<<endl;}
private:string m_name;int m_age;int m_nu;
};
//主程序
int main(void){Student stu("小明",20,10010);//实例化一个对象,并匹配构造函数,初始化私有成员变量stu.who();//s.Student("小明",20,10010);//error,不能显式调用return 0;
}

结果:

4、对象的创建和销毁

①在栈区创建单个对象

类名 对象(构造实参表);//无实参的话不需要加括号

如果只有一个构造实参也可以:类名 对象=构造实参;

类名 对象=类名(构造实参表);//拷贝初始化

Student stu{"张飞",25,16542};
Student sua=Student{"关羽",26,15354};

②在栈区创建多个对象(对象数组)

类名 对象数组[元素个数]={类名(构造实参表),...};

③在堆区创建、销毁单个对象

创建:类名*对象指针=new 类名(构造实参表)

销毁:delete 对象指针

Student*ps=new Student("小明",21,10012);
delete ps;
ps=NULL;

④在堆区创建、销毁对象数组

创建:类名*对象指针=new类名[元素个数】{类名(构造实参表)}

销毁:delete[] 对象指针;

Student*pr=new Student[2]{Student("小红".23,10013),Student("小李",25,10001)};
detele[] pr;
pr=NULL;

5、多文件编程

①类的声明放在.h文件中

②类的实现放在.cpp源文件中

例如:

写一个头文件student.h和源文件 student.c

测试程序和结果都没问题


http://chatgpt.dhexx.cn/article/IiQMmO2L.shtml

相关文章

4.类的定义,变量类型,方法类型

文章目录 1.类的概念1.1 如何创建一个类1.2 如何定义一个类1.2.1变量1.2.2 方法 2.对象3.类定义使用实例4.理解类和对象的关系4.1.一个java程序和类之间的关系 5.细节知识分析5.1.类与类的关系5.2.变量和变量区别5.3.方法的区别5.4.类方法和类变量的特点 1.类的概念 类java是基…

关于类的定义

类的定义 类的概念如何定义类修饰符 类的概念 1、类是把事物的数据与相关功能封装到一起&#xff0c;形成一种特殊的数据结构&#xff0c;用以表达真是事物的一种抽象&#xff1b;而对象则是实际存在的属该类事物的具体个体&#xff0c;因而也称为实例&#xff08;instance&am…

python 爬虫爬取疫情数据,爬虫思路和技术你全都有哈(一)

python 爬虫爬取疫情数据&#xff0c;爬虫思路和技术你全都有哈&#xff08;二、数据清洗及存储&#xff09; 爬起疫情数据&#xff0c;有两个网址&#xff1a; 1、百度&#xff1a;链接 2、丁香园疫情&#xff1a;链接 在这两个中&#xff0c;丁香园的爬虫相对简单一点&#…

采用python爬虫爬取数据然后采用echarts数据可视化分析

前言&#xff1a;采用python爬虫爬取天气数据然后采用echarts数据可视化画图分析未来天气变化趋势 从获取数据到可视化的流程 &#xff08;熟悉爬虫爬取数据然后数据可视化这个过程&#xff09; 一、python爬取未来8-15天的天气数据 1、导入用到的一些python第三方库 imp…

python网络爬虫爬取数据,python全网爬取内容

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python网络爬虫爬取数据&#xff0c;利用python爬取数据&#xff0c;现在让我们一起来看看吧&#xff01; 网络爬虫&#xff0c;就是按照一定规则自动访问互联网上的信息并把内容下载下来的程序或脚本。 在整个的Python…

Python爬虫爬取网页数据并存储(一)

Python爬虫爬取网页数据并存储&#xff08;一&#xff09; 环境搭建爬虫基本原理urllib库使用requests库使用正则表达式一个示例 环境搭建 1.需要事先安装anaconda&#xff08;或Python3.7&#xff09;和pycharm *anaconda可在中科大镜像下下载较快 2.安装中遇到的问题&#x…

【用Java爬取网页图片——爬虫爬取数据】

用Java爬取网页图片——爬虫爬取数据 1、在创建项目中导入jsoup 2、创建一个保存下载图片的路径 3、使用URL读取网页路径&#xff0c;jsoup读取网页内容 4、利用属性标签获取图片连接块 5、因为该路径没有http&#xff1a;头&#xff0c;用StringBuilder增加 5、完善下载路径…

爬虫爬取数据

打开爬取工具页面,使用爬虫工具列表: 开始节点 仅仅是爬虫的起点,所有流程图必须有该节点。 爬取节点 该节点用于请求HTTP/HTTPS页面或接口 请求方法:GET、POST、PUT、DELETE等方法 URL: 请求地址 延迟时间:单位是毫秒,意思是爬取之前延迟一段时间在执行抓取 超时时间:网…

手把手教会 爬虫爬取json数据

提示&#xff1a;本章爬取练习的url地址 发现曲谱 (yoopu.me) 前言 我们学爬虫&#xff0c;有时候想要的数据并不在html文本里面&#xff0c;而是通过js动态渲染出来的。 如果我们需要爬取此类数据的话&#xff0c;我们该怎么办呢&#xff1f; 请读者接着往下看&#xff1a…

六个步骤学会使用Python爬虫爬取数据(爬虫爬取微博实战)

用python的爬虫爬取数据真的很简单&#xff0c;只要掌握这六步就好&#xff0c;也不复杂。以前还以为爬虫很难&#xff0c;结果一上手&#xff0c;从初学到把东西爬下来&#xff0c;一个小时都不到就解决了。 Python爬虫六部曲 第一步&#xff1a;安装requests库和BeautifulS…

网络爬虫入门:网络爬虫的目的,企业获取数据的方式,可以用于做爬虫的程序语言,爬虫爬取数据的步骤

目录 爬取数据的目的&#xff1a; 1.获取大量数据&#xff0c;用于做数据分析 2.公司项目的测试数据&#xff0c;公司业务所需数据 企业获取数据的方式 1.公司自有数据 2.第三方数据平台购买&#xff08;数据堂&#xff0c;贵阳大数据交易所&#xff09; 3.爬虫爬取数据…

利用爬虫爬取数据集

相信大家在学习tensorflow的过程中&#xff0c;会想要自己动手来试试加载我们的数据集&#xff0c;而不再局限于从datasets上下载数据集。但是往往一个模型的训练就需要很庞大的数据集&#xff0c;因此写下这篇博客教大家如何用爬虫爬取图片&#xff0c;制作自己的数据集&#…

微信小程序实名认证接口_人脸核身接口整理

一、微信小程序实名认证接口_人脸核身接口整理 开场一个字&#xff1a; 悲观。目前实名接口&#xff0c;人脸识别接口开放度不高。“实名信息授权”已经回收。 二、人脸核身接口 1.使用条件 需要现申请通过才能使用。 目前开放的分类不多&#xff0c;并且还需要行业资质。 …

微信小程序—人脸识别

1.首先你要有一个可以就行人脸识别的服务器&#xff0c;然后就是上传到百度云&#xff0c;百度云人脸识别的API接口全面升级到V3版本&#xff0c;并进行开放测试 2.wxml代码 <camera device-position"{{sxt}}" flash"off" binderror"error" s…

微信小程序实现人脸识别注册登录

前言 这是一篇关于一个原创微信小程序开发过程的原创文章。涉及到的核心技术是微信小程序开发方法和百度云人脸识别接口。小程序的主体是一个用于个人密码存储的密码管理器&#xff0c;在登陆注册阶段&#xff0c;需要调用百度云人脸识别接口以及百度云在线人脸库的管理接口。…

C# Winform开发人脸识别小程序 (基于百度接口)

目录 一、设计思路1、背景2、简介3、用到的技术4、设计功能一&#xff1a;用户注册功能概述功能示意图时序图 功能二&#xff1a;人脸识别功能概述功能示意图时序图 二、实现1、环境准备2、百度接口配置3、技术准备4、代码实现功能一&#xff1a;用户注册功能二&#xff1a;人脸…

python人脸检测与微信小程序_微信小程序人脸识别功能

本文档以微信小程序为例&#xff0c;微信小程序开发人脸核身功能需要两个申请&#xff1a;腾讯云申请人脸识别服务和小程序申请人脸识别服务&#xff08;注意&#xff1a;只有符合以下条件的机构才能在小程序端申请&#xff09; 政务&#xff1a;政府机构或事业单位 金融&…

使用uniapp开发微信小程序的人脸采集功能/人脸识别功能

✅作者简介&#xff1a;大家好我是瓜子三百克&#xff0c;励志成为全栈工程师的一枚程序猿&#xff0c;也是喜欢在学习和开发中记录笔记的小白博主&#xff01; &#x1f4c3;个人主页&#xff1a;瓜子三百克的主页 &#x1f525;系列专栏&#xff1a;uniapp前端 &#x1f496;…

无需证书微信小程序实现人脸识别—E证通

E证通 前言收费标准接入准备小程序1、 添加服务器域名白名单2、添加业务域名白名单3、安装 SDK/小程序包4、SDK 调用步骤即实操代码4.1、初始化 SDK4.2、 调用 SDK 5、拿到回调结果6、使用uni-app开发6.1、小程序运行后&#xff0c;在小程序中丢入sdk包6.2、把sdk包转换成uni-a…

小程序实现人脸识别与小程序发布

文章目录 前言主要实现功能效果演示PC端手机端 调用百度Ai人脸检测接口小程序发布流程项目源码编程之外 前言 人脸识别其实没那么复杂&#xff0c;我国几个大厂都有他们的AI开放平台&#xff0c;调用一下他们的人脸检测接口就行了&#x1f601;&#xff08;虽然接口不是自己写的…