IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> [菜鸟到大佬]第二篇C++类和对象(上) -> 正文阅读

[C++知识库][菜鸟到大佬]第二篇C++类和对象(上)

类和对象

面向对象

什么是面向对象?面向对象就跟C类似但是区别又很大,众所周知C是面向过程,而这个过程又是函数的实现的过程,而C++的对象则是里面的重点,而不是函数的实现,比如一个购物系统,购物系统有客户下单、商家接单发货、快递员取货和送货,如果用C的话则关注客户下单、商家接单发货和快递员送货取货的实现过程,但是在C++关注的则是客户、商家和快递员之间的关系这就是面向对象。

类的定义

类就像C语言的结构体,不过在C++这里升级了叫类,类的意思是一个新的类型,就像自定义类型一样跟C的结构体如出一辙,我们以往用C语言的时候都是用struct name创建一个自定义类型,而换在C++的话则是class name使用方法和C语言的结构体一样,class也能像struct一样创建结构体,因为C++是兼容C的,但是使用class里面的成员变量方法不一样。

#include <iostream>

using namespace std;

struct test1
{
public:
    int a;
}

class test2
{
    int a;
}


int main()
{
    test1 a;
    a.a = 10;
    test2 b;
    b.a = 20;
    
    return 0;
}

访问限定符

在这里插入图片描述

C++提供三种访问限定符来更好的管理我们的类,公有限定符的作用就是字母意思,被这限定符作用的成员都是公有的可以任意使用,而保护和私有差不多,都是用来防止别人使用里面的成员。
我们都知道classstruct差不多,但是它们有一个区别,那就是没给限定符的时候,没给限定符的时候class默认是私有说明里面的内容不能被外面访问,而struct默认是共有的里面的内容可以任意访问。

类域

每个类创建都是一个新的域,如果想访问类域需要指定如:Stack :: Push,私有和保护针对的是类域外面的不能直接访问它们,只能通过公有给的成员函数来合法使用。

实例化

用类创建的对象叫做实例化对象,当这个类实例化时会占用实际的空间。

限定符的使用

#include <iostream>

using namespace std;

class Stack
{
public://公有
	void Push(int size, int val)
	{
		//...
	}
private://私有
{
int val;
int size;

int mainm()
{
	Stack a;//类实例化对象
	Stack::Push(2, 2);//指定类域访问改类里面的内容
	
	return 0;
}

类的大小

我们知道C语言中结构体是占空间的,但是类占不占呢?如果占是如何计算的呢?我们知道C语言结构体会内存对齐。
经过测试,我发现以下三中情况,成员函数是不算空间大小的,而里面的基本类型会。
如下:

#include <iostream>

using namespace std;
class test1//空类
{

};

class test2//成员函数和成员变量构成的类
{
public:
	void Push()
	{
		//...
	}

private:
	int val;
};

class test3//成员变量类
{
	int val;
};

int main()
{
	cout << "test1:" << sizeof(test1) << endl;
	cout << "test2:" << sizeof(test2) << endl;
	cout << "test3:" << sizeof(test3) << endl;

	return 0;
}

在这里插入图片描述
我们可以看到,如果是空类他会用一个字节占位,而成员函数则不计算在内并且也有内存对齐。

this指针

this是一个关键字,他是类成员函数里面的一个隐藏参数,每个成员函数都有一个this指针接下来我们创建一个日期类就能很好的明白this指针的作用了。

#include <iostream>

using namespace std;
class Date
{
public:
	Date(int year = 1, int moth = 1, int day = 1)
	{
		this->year = year;
		this->moth = moth;
		this->day = day;
	}

	void Print()
	{
		cout << this->year << ' ' << this->moth << ' ' << this->day << endl;

	}

private:
	int year;
	int moth;
	int day;
};

int main()
{
	Date A;

	A.Print();

	return 0;
}

在这里插入图片描述
在这里插入图片描述

我们可以看到this指针是存在的,而且它的作用是区分里面的变量,比如我实例化两个对象,每个对象都赋不同的值,编译器是如何区分的呢?答案是靠this指针,this指针的类型是:类类* const。

this指针的特性

  1. this指针无法直接做为形参,且只能在类的函数成员内使用。
  2. this指针是隐藏的,this指针的传址是传实例化对象的地址。

创作不易,你们的点赞是支持我创作的最大动力!

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 11:15:53  更:2021-07-24 11:16:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 6:22:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码