C++中类的创建和声明

devtools/2024/9/24 20:24:05/

目录

前言

一、类的概念

二、对象


前言

        说实话,C++和C语言有比较大的差别,在C语言中我们面向的是过程,即要怎么实现功能的过程,在C++中,我们面向对象,将这些功能和函数封装起来,用到直接调用对象,那这个过程也是基于C语言的,但是大致不同的是在C语言中我们需要自己写各种功能,在C++中我们可以用其他人写好的,封装好的函数来实现相应的功能,所以涉及到的函数也相对较多。了解了这样一个大致过程,其实我们可以开始学习c++时,要注重C++中的各种语法知识和操作细节,相比C语言有不同,但是也有相似的之处,本文主要用来进行类的声明和创建,类的概率在C++中非常重要,这也是C++与C语言最大的区别。因为在C语言中没有类这个概念,也没有对象这种说法,所以重点掌握类和对象,也就理解了C++

一、类的概念

        定义:类是指一类事物的统称,将一些事物的特征(属性)和行为(方法),进行归总,得到一类事物的描述

        个人理解:像人就是一个类,但是我们也有不同的人,每个人都有自己的特征,身高体重,年龄,名字,这些特征在类中叫做属性,人能够吃饭睡觉,还有看电视,这种做某件事的能力,在类中叫行为

二、对象

        定义:我们将类的实例化,叫做对象类是一个模板,定义了数据(属性)和操作数据的方法(方法)。对象是基于这个模板创建的实际实体。

看下面的例子:

1_pig.h

#ifndef __1_PIG_H__
#define __1_PIG_H__class pig
{//定义属性int id;int age;const char sex;public:char * name;//定义行为//pig::pig(int i,int a,char s,char *n);//错误用法,在类声明的函数中,构造函数和成员函数不需要用 pig:: 修饰,只需要在函数定义(实现)时使用。pig(int i,int a,char s,char * n);pig(char s);~pig();int getid();void setid(int i);};#endif

1_pig.cpp

#include "1_pig.h"#include <iostream>
#include <cstring>
#include <cstdlib>using namespace std;//构造函数
pig::pig(int i,int a,char s,char *n):sex(s)
{name=new char[20];memset(name,0,20);strcpy(name,n);id=i;age=a;cout<<"pig(int i,int a,char s,char *n)"<<endl;
}
pig::pig(char s):sex(s)
{cout<< "pig(char s)"<<endl;
}
pig::~pig()
{cout<<"~pig()"<<endl;delete [] name; 
}
int pig::getid()
{return id;
}
void pig::setid(int i)
{id=i;
}

main.cpp

#include "1_pig.h"
#include <iostream>
using namespace std;
int main(int argc,char *argv[])
{pig p1(1,3,'m',"xiaozhu");cout<<"pig_ID="<<p1.getid()<<endl;return 0;
}

看主函数当中,我们在pig这个类中创建了p1这个对象,并且将p1这个对象中的属性初始化

,那么是怎么进行初始化的呢,这就说到了C++中的一个特性,在基于类的模板创建对象时,编译器会自动生成一个构造函数,然后再对象生命周期结束的时候,会自动生成一个析构函数,当然这是在我们没有定义构造函数和析构函数的前提下才会自动生成,上面的代码当中我自己定义了两个构造函数,因为构造函数支持函数重载,并且构造函数和类名一致。


http://www.ppmy.cn/devtools/116653.html

相关文章

嵌入式面试学习笔记(入门1)

目录 指针的大小问题 sizeof和strlen C语言分配内存的方式 数组&#xff08;的&#xff09;指针和指针&#xff08;的&#xff09;数组 union 指针的大小问题 指针对于不少新手而言是一道难关&#xff0c;但是不必恐惧于指针。他的本质其实就是一个地址。请冷静下来仔细思…

【大模型专栏—实战篇】从0到1带你QLoar微调

大模型专栏介绍 &#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本文为大模型专栏子篇&#xff0c;大模型专栏将持续更新&#xff0c;主要讲解大模型从入门到实战打怪升级。如有兴趣&#xff0c;欢迎您的阅读。 &#x1f4…

Debezium日常分享系列之:将容器镜像移至 quay.io

Debezium日常分享系列之&#xff1a;将容器镜像移至 quay.io 在Debezium 3.0.0.Final发布之后&#xff0c;我们将不再向docker.io发布容器镜像更新。旧版本的Debezium 2.x和1.x镜像将继续保留在docker.io上&#xff1b;然而&#xff0c;所有未来的Debezium 2.7.x和3.x或更高版本…

python | huey,一个非常厉害的 任务调度 Python 库!

本文来源公众号“python”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;huey&#xff0c;一个非常厉害的 Python 库&#xff01; 大家好&#xff0c;今天为大家分享一个非常厉害的 Python 库 - huey。 Github地址&#xff1a;h…

图片切换示例2【JavaScript】

这段代码实现了一个简单的图片切换效果。当用户将鼠标悬停在不同的小缩略图上时&#xff0c;主显示框&#xff08;#box&#xff09;的背景图片会切换为相应的缩略图所代表的图片。 实现效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"zh"…

project generator 简单使用(二)之 CLion 与 AC6

文章目录 1 AC6 之于 CLion2 配置 progen3 可执行文件 size 显示优化4 测试 1 AC6 之于 CLion 1&#xff09;在上一篇文章中&#xff0c;我们知道 project generator 通过其 “Write Once, Compile any Tool” &#xff08;跨工具&#xff09;的特性&#xff0c;可以让我们使用…

Vue3:$refs和$parent实现组件通信

在Vue3中&#xff0c;refs和refs和parent是用于组件间通信的重要机制 一.$refs 1.操作子组件数据 一旦获取到子组件的实例&#xff0c;父组件可以修改子组件暴露的变量值&#xff0c;实现父子组件间的直接数据交换。 2.批量处理子组件 $refs可以用于同时获取多个子组件的…

Vue相关

Vue2 组件传递事件&#xff1a; props $emit sync v-model $parent / $children $parent获取父组件的实例&#xff0c;任意调用父组件的方法&#xff0c;修改父组件的数据 ref 父组件获取 子组件 实例&#xff0c;任意调用子组件的方法获取子组件的属性 provide / injectp…