首页 > 编程语言 >C++类和对象 前篇

C++类和对象 前篇

时间:2024-07-13 18:54:32浏览次数:11  
标签:前篇 函数 对象 成员 C++ 访问 限定符 class

C++类和对象 基础部分

​ 众所周知,C语言是一门面向过程的语言,面向过程简单来说就是直接使用各种函数和数据来解决一件事。而面向对象是谁来使用函数和数据去解决一件事。

​ C++是一门既可以面向对象也可以面向过程的语言,它能够兼容C语言,并且对C语言进行了许多优化升级,其中最为重要的便是类和对象

​ 在C++中,struct升级成了类class,类是一种自定义类型,由这种类型声明的变量被称为“对象”,并且在类中,不仅可以定义变量,也可以定义函数

class和struct的区别

class具有三种访问限定符——公有,私有和保护,其中被保护和私有的成员我们无法在类外面进行访问。struct的默认访问限定符为public(公有),class默认为private(私有)。

为什么会出现类

首先得提到面向对象的三大特性:封装、继承、多态C语言中数据和方法是分离的,任何人都可以访问和修改,并且函数也是能在随意的位置定义,安全性和可维护性都不高。在C++中,我们将类看作一个整体,函数和变量都被封装在类中,提高可维护性,而不想被随意访问的数据可以用访问限定符进行限制,提高了安全性。

image-20240711204455549

​ 其中,类的函数和变量被称为成员函数成员变量。在类中定义的函数默认为内联函数,并且类本身不占用空间(但是会开辟一个字节不存储数据,用于占位)
​ 当成员函数的访问权限为公有时,该函数代码段全部保存在公共代码区,也不占用内存。如下图,date1和date2是两个不同的对象,它们所调用的Print函数访问相同地址。
image-20240711230555098
​ 并且,以下代码也可以运行:

class Test {
public:
	void Print()
	{
		cout << "Print()" << endl;
	}
private:
	int a;
};
int main()
{
	Test* test1;
	test1 = nullptr;
	test1->Print(); //原因就在于成员函数在公共代码区,不需要解引用就可以找到该函数
}

​ 由此可见,类的出现增加了代码的安全性,可维护性,提高了运行效率和空间利用率

标签:前篇,函数,对象,成员,C++,访问,限定符,class
From: https://blog.csdn.net/m0_63816268/article/details/140378584

相关文章

  • C++知识备忘及面试指导
    一、C++基础1.C和C++有什么区别?C语言C语言是纯面向过程的语言,不支持面向对象,函数名字不会被改编(函数不能重载)C语言的结构体只支持成员变量,不支持成员函数,成员没有访问控制(即没有publicprotectedprivate)C++C++是C语言的超集,同时支持面向过程和面向对象(类)函数名字编译......
  • 面向对象-接口和多态
     1.接口的特性:接口里的数据成员必须初始化,且数据成员均为常量;接口里的方法必须全部声明为abstract,也就是说,接口不能像抽象类一样保有一般的方法,而必须全部是“抽象方法”。2.接口定义的语法:interface接口名称//定义抽象类{final数据类型成员名称=常量;/......
  • C++利用类和对象封装立方体面积和体积
    C++利用类和对象封装立方体面积和体积1、说明2、代码3、总结1、说明C++利用类和对象进行封装立方体的面积和体积,对学过的知识进行总结,本代码并非原创。2、代码#include<iostream>#include<time.h>#include<string.h>#include<ctime>usingnamespacestd;//立......
  • 万能可调用对象绑定器CPBind
    背景作为一个C++程序员,经常喜欢写一些代码小工具,有一天写代码用到了std::bind,需要和std::function配合使用,并且需要传递的参数类型也已经固定,所以我就想能不能写一个类让它可以接受任意类型的可调用对象(C函数,成员函数,静态函数,lambda表达式,重载operator()的类对象等),所以写出......
  • C++ 小苹果
    题目描述小Y的桌子上放着 n 个苹果从左到右排成一列,编号为从 1 到 n。小苞是小Y的好朋友,每天她都会从中拿走一些苹果。每天在拿的时候,小苞都是从左侧第 1 个苹果开始、每隔 2 个苹果拿走 1 个苹果。随后小苞会将剩下的苹果按原先的顺序重新排成一列。小苞想......
  • c++ 勾股数
    题目描述输入整数R,输出小于等于R的满足X²+Y²=Z²的所有正整数X,Y,Z输入格式输入一个实数:R(1<=R<=100)输出格式输出一个整数表示共有多少组满足条件的勾股数样例输入10样例输出2代码如下#include<bits/stdc++.h>//万能头文件usingnamespacestd;i......
  • Hash表(C++)
        本篇将会开始介绍有关于unordered_map和unordered_set的底层原理,其中底层实现其实就是我们的Hash表,本篇将会讲解两种Hash表,其中一种为开放定址法,另一种为hash桶,在unordered_map和unordered_set的底层实现中主要是使用的是hash桶。    本......
  • c++ 计算mp3时长
    #include<stdio.h>#include<iostream>#include<fstream>#include<string>usingnamespacestd;structID3V2{ chartag[3]; charversion; charsubVersion; charflag; charsize[4];};constintbitrateIndex[16][5]={ {......
  • 类和对象(中)|
    1.类的6个默认成员函数2.构造函数3.析构函数4.拷贝构造函数5.赋值运算符重载6.const成员函数7.取地址及const取地址操作符重载1.类的6个默认成员函数空类里面并不是什么成员都没有,编译器会自动生成6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成的成员......
  • 【C++编程】数组、函数、结构体、指针、类
    数组:存储一个固定大小的相同类型元素的顺序集合声明、初始化:typearrayName[size0][size1]...={{value00,value01,...},{value10,value11,...},...};intmy_array[2][3]={{1,2,3},{4,5,6}};访问数组元素:arrayName[index0][index1]...;intget_eleme......