【C++】类和对象_1_定义和定义域

1.类的定义:

class className
{//类体:由成员函数和成员变量组成
};//注意后面的分号

class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。
类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。

类的两种定义方式:

  1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。
class Person
{public:void ShowInfo(){ cout<<_name<<"-"<<_sex<<"-"<<_age<<endl;}
private:char*_name;char*_sex;int age;
};
  1. 类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加类名::

Person.h

class Person
{
public:void ShowInfo();private:char*_name;char*_sex;int age;
};

Person.cpp

#include"Person.h"
void Person::ShowInfo()
{cout<<_name<<"-"<<_sex<<"-"<<_age<<endl;
}

2.类的访问限定:

2.1访问限定符:

在这里插入图片描述

  1. public修饰的成员在类外可以直接被访问
  2. protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的)
  3. 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止
  4. 如果后面没有访问限定符,作用域就到 } 即类结束。
  5. class的默认访问权限为privatestruct为public(因为struct要兼容C)

2.2类的作用域:

类定义了一个新的作用域,类的所有成员都属于这个作用域,在类的作用域外要调用其中的成员时,要用::来指明调用内容的作用域。

比如栈的简单实现和调用:

Stack.h:

#include<iostream>typedef int DataType;
class Stack
{
public:void Init(size_t capacity);void Push(DataType data);DataType Top();void Destroy();
private:DataType* _arry;int _capacity;int _size;
};

Stack.cpp:

#include"Stack.h"void Stack::Init(size_t capacity)
{_arry = (DataType*)malloc(capacity * sizeof(DataType));if (_arry == nullptr){perror("malloc failed");return;}_capacity = capacity;_size = 0;
}
void Stack::Push(DataType data)
{int newcapacity = _capacity == 0 ? 4 : _capacity * 2;_arry = (DataType*)malloc(newcapacity * sizeof(DataType));_capacity = newcapacity;_arry[_size] = data;_size++;
}
DataType Stack::Top()
{return _arry[_size-1];
}
void Stack::Destroy()
{free(_arry);_arry = nullptr;_size = 0;_capacity = 0;
}

test.cpp:

#include"Stack.h"
using namespace std;void test1()
{Stack s;s.Init(5);s.Push(1);cout << s.Top() << endl;}int main()
{test1();
}

在这里插入图片描述

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

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

相关文章

docker安全与https协议

一、docker存在的安全问题 1、docker 自身漏洞 docker 应用本身实现上会有代码缺陷&#xff0c;docker 历史版本共有超过 20 项漏洞 2、docker公有仓库安全问题 docker 提供了 docker hub&#xff0c;可以让用户上传创建的镜像&#xff0c;以便其他用户下载&#xff0c;快速…

05 MyBatis之表关系的声明+事务+SqlSession三件套的作用域

MyBatis 支持一对一&#xff0c;一对多&#xff0c;多对多查询。XML 文件和注解都能实现关系的操作。多对多实质就是一对多 1. 表关系的维护 1.1 One一对一 一对一查询和多表(两表)查询很相似, 都能查询两表的全部属性 区别是一对一可以在对象中嵌套对象, 呈现包含关系; 多表…

elementUI之用label传值给v-model的el-radio

如图 这个控件比较特别&#xff0c;是用label作为传给v-model的值&#xff0c;其他控件大多都是用value来传值。 el-radio-group的作用是将其中的单选控件作为一组。

1 计算机网络概述(一):概述

目录 目标1 计算机网络概述1.1 计算机网络的定义和演变1、计算机网络的定义2、计算机网络的演变3、网络发展的里程碑4、我国的网络发展 1.2 计算机网络的分类、组成和网络性能1、计算机网络的分类2、计算机网络的组成3、网络主要性能 目标 了解计算机网络的产生和发展过程了解…

chromedriver安装和环境变量配置

chromedriver 1、安装2、【重点】环境变量配置&#xff08;1&#xff09;包的复制&#xff1a;&#xff08;2&#xff09;系统环境变量配置 3、验证 1、安装 网上随便搜一篇chromedriver的安装文档即可。这里是一个快速链接 特别提醒&#xff1a;截止2024.1.30&#xff0c;chr…

第 7 章:进程间通信

在本章中&#xff0c;您将了解Linux提供的进程间通信&#xff08;IPC&#xff09;接口。通过它们&#xff0c;您将全面了解如何满足系统和软件需求。首先&#xff0c;您将学习消息队列&#xff08;MQs&#xff09;&#xff0c;这是对[第3章]中关于管道的讨论的延续。此外&#…

[ESP32]在Thonny IDE中,如何將MicroPython firmware燒錄到ESP32開發板中?

[ESP32 I MicroPython] Flash Firmware by Thonny(4.1.4) IDE 正常安裝流程&#xff0c;可參考上述影片。然而&#xff0c;本篇文章主要是紀錄安裝過程遇到的bug, 供未來查詢用&#xff0c;也一併供有需要的同好參考。 問題:安裝後&#xff0c;Thonny互動介面顯示一堆亂碼和co…

【C++】STL之空间配置器(了解)

一、什么是空间配置器 空间配置器 &#xff0c;顾名思义就是为各个容器高效的管理空间&#xff08;空间的申请与回收&#xff09;的&#xff0c;在默默地工作。虽然在常规使用 STL 时&#xff0c;可能用不到它&#xff0c;但站在学习研究的角度&#xff0c;学习它的实现原理对…

2024年【陕西省安全员A证】考试资料及陕西省安全员A证考试技巧

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 陕西省安全员A证考试资料考前必练&#xff01;安全生产模拟考试一点通每个月更新陕西省安全员A证考试技巧题目及答案&#xff01;多做几遍&#xff0c;其实通过陕西省安全员A证证考试很简单。 1、【多选题】《陕西省建…

pinctrl/gpio子系统(1)-pinctrl子系统介绍及驱动源码分析

1.简介 在如今的驱动开发工作中&#xff0c;实际上已经很少去对着寄存器手册进行驱动开发了&#xff0c;一般板子拿到手&#xff0c;已经有原厂的驱动开发工程师&#xff0c;在gpio子系统、pinctrl子系统中将自家芯片的引脚适配好了。 我们直接基于设备树已配置好的寄存器值&a…

个人证件照电子版怎么弄?分享详细的步骤!

在当今数字化的时代&#xff0c;个人证件照电子版已成为我们生活中不可或缺的一部分。无论是办理护照、身份证&#xff0c;还是申请各种证书&#xff0c;都需要提供个人证件照。但是&#xff0c;如何快速、简单地制作出符合要求的电子版证件照呢&#xff1f;本文将为你详细介绍…

Java多线程--同步机制解决线程安全问题方式二:同步方法

文章目录 一、同步方法&#xff08;1&#xff09;同步方法--案例11、案例12、案例1之同步监视器 &#xff08;2&#xff09;同步方法--案例21、案例2之同步监视器的问题2、案例2的补充说明 二、代码及重要说明&#xff08;1&#xff09;代码&#xff08;2&#xff09;重要说明 …