4.C++面向对象1(类的定义,实例化,三大特性-封装)

⭐本篇文章为C++学习第4篇,主要了解类和对象基础

⭐本人C++代码的Gitte仓库:yzc的c++学习: 小川c++的学习记录 - Gitee.com            、       

⭐我们知道面向对象有三大特性:封装,继承,多态,我们以类为基础进行讲解

目录

一. 类的引入与定义

1.1 类的引入

1.2 类的定义和声明

二. 类的访问限定符及封装⭐

三. 类的作用域和实例化

 四. 几个常见易错分析⭐

4.1 C++中类和struct的区别是什么?

4.2 函数,结构体等的声明与定义区别是什么?

4.3 C++面向对象三大特性是什么?C++是如何实现封装的??


一. 类的引入与定义

1.1 类的引入

1. C语言中,我们可以在结构体中定义变量,不能定义函数

2. C++中,我们可以在结构体中定义变量和函数

#include<iostream>
using namespace std;

struct Node_c
{
	int val;
	struct Node_c* next;
};

struct Node_cpp
{
	int val;
	Node_cpp* next;

	//c++可以在类中定义函数
	Node_cpp CreatNode()
	{}
};

int main()
{
	return 0;
}

上面结构体的定义,在c++中,我们更喜欢使用class来定义

class Node_cpp
{
	int val;
	Node_cpp* next;

	//c++可以在类中定义函数
	Node_cpp CreatNode()
	{}
};

1.2 类的定义和声明

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

其中,class为关键字,用于定义类。classname是该类的名字,{}中的是类的主体

类中可以定义两种成员:1. 成员变量        2. 成员函数

类的定义和声明有两种方式:

1. 类成员的声明和变量都放在类体内部。

注意:编译器默认类内部声明定义的函数是内联函数

举例:

//在类内部声明和定义
class person
{
	int age;
	string name;
	string ID;
	void ShowInfo()
	{
		cout << "age:" << age << "name:" << name << "ID:" << ID;
	}
};

2. 类的声明放在.h文件中,类的定于放在.cpp文件中。

注意:在.cpp文件中定义类的时候要在成员函数前加上 类名::

.h文件

#pragma once

//类声明
class person
{
	int age;
	string name;
	string ID;
	void ShowInfo();
};

.cpp文件

#include<iostream>
#include"blog.h"
using namespace std;

//类函数的定义
void person::ShowInfo()
{
	cout << "age:" << age << "name:" << name << "ID:" << ID;
}

int main()
{
	return 0;
}

我们在日常学习的时候建议使用第一种,比较方便。

在工程中建议使用第二种,更规范。

二. 类的访问限定符及封装⭐

我们知道C++面向对象三大特性中的一个:封装

C++实现封装的方式:用类将对象的属性和方法结合在一块,完善对象,再使用访问权限选择性将接口提供给外部用户使用

 访问限定符有三种:

public(公有)        private(私有)        protected(保护)

说明:

1. public修饰的成员外部可以直接访问

2. private和protected修饰的成员外部无法直接访问(这两种限定符类似)

3. 访问权限从一个限定符开始,到另一个限定符为止

4. 如果后面没有访问限定符,作用域到}即类结束

5. class默认访问权限是private,struct默认访问权限就是public

6. 一般情况下,成员变量都是比较隐私的,都会用私有或者保护修饰

举例:

//访问限定符
class Student
{
public:
//公有区域
	void ShowInfo()
	{
		cout << _name << endl;
		cout << _age << endl;
		cout << _id << endl;
	}


	int _GetAge()
	{
		return _age;
	}
//公有区域
private:
//私有区域
	char* _name;
	int _age;
	int _id;
//私有区域
};

三. 类的作用域和实例化

3.1 类的作用域

 类定义了新作用域:类中所有成员都在类的作用域中,如果在类外定义类成员需要使用

类名+:: 进行定义

 3.2 类的实例化

类是用于描述的对象的,我们定义的类没有分配实际的内存空间(只是一段代码)。

当使用类创建对象的时候,才会占用实际物理空间,存储成员变量

且一个类可以实例化多个对象

int a;
Student st;

可以类比int和Student类,a是整形变量,st是学生变量

只有a和st占用物理空间,int和Student不会占用

举例:

#include<iostream>
using namespace std;

//访问限定符
class Student
{
public:
	void ShowInfo()
	{
		cout << "name:" << _name << " " << " age:" << _age << " id:" << _id << endl;
	}

	const char* _name;
	int _age;
	int _id;
};


int main()
{
   	Student st1;    //实例化一个对象st1
	st1._age = 18;
	st1._name = "张三";
	st1._id = 1;
	st1.ShowInfo();
	return 0;
}

运行结果:

 

 四. 几个常见易错分析⭐

4.1 C++中类和struct的区别是什么?

C++兼容C语言,所以在C++中可以使用struct去定义结构体使用,C++也能使用struct去定义类

C++使用struct定义类和class定义的类基本一致,唯一区别是struct定义类,成员默认是公有的。使用class定义类,成员默认是私有的

4.2 函数,结构体等的声明与定义区别是什么?

声明是一种承诺,表示程序中有该函数,结构体。我们可以通过声明的名字快速了解该函数,结构体等的作用

定义是给出函数,结构体等如何实现这个功能或者内容。我们可以通过定义了解函数,结构体的具体内容

4.3 C++面向对象三大特性是什么?C++是如何实现封装的??

封装,继承,多态

封装:将数据和对数据的操作的方法进行结合,隐藏对象的属性和细节,用户仅通过对外公开的接口和对象交互。方便用户的同时也保护数据

C++实现封装,可以通过类将数据和对数据操作的方法进行结合,通过private,public等访问权限来隐藏内部实现细节,控制哪些方法供外部使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘子真甜~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值