C++类与对象的初步认识

C++类与对象的初步认识

C语言与C++的区别前者关注的是过程,后者关注的是对象,一个是分析出求解问题的步骤,另一个是将事前拆分成不同的对象,靠对象之间的交互完成,而在C++中一个对象需要定义一个类来实例化,同时类的定义需要关键字class来来声明,类与对象的关系类实例就比如:现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例变量和方法化出的对象才能实际存储数据,占用物理空间。在类中通常有public 、protect、 private三中访问限定符,这三种起到对数据是否在类外可以有访问权限的设定,public限定下的变量和方法是类外可以直接访问,而protect和private限定的的成员在类外不可直接访问。提到这里我们可能会问为什么会有访问限定符的存在呢,这是因为用类将对象的属性与方法结合在一块,让对象更加完善,通过访问权限选择性的将其接口提供给外部的用户使用。这就是C++封装的思想,将类中得到数据和实现方法进行权限设置,让我们设置一些更合理的公共接口去访问对象,尽量不去随机访问对象,以及更改对象的属性。如下程序所示用定义了一个Person的类。

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

class Person
{
public:
	void PersonInfo(const char* name, const char* sex, int age);
	void PersonPrint();

private:
	char _name[20];
	char _sex[5];
	int _age;
};

void Person::PersonInfo(const char* name, const char* sex, int age)
{
	strcpy(_name, name);
	strcpy(_sex, sex);
	_age = age;
}

void Person::PersonPrint()
{
	cout << "姓名:" << _name << endl;
	cout << "性别:" << _sex << endl;
	cout << "年龄:" << _age << endl;
}

int main()
{
	Person s1;
	s1.PersonInfo("张三", "男", 18);
	s1.PersonPrint();

	Person s2;
	s2.PersonInfo("王五","男",20);
	s2.PersonPrint();

	return 0;
}

在类中我们的方法和变量是怎样存储的呢,如下如所示,变量存放在对象的中,而成员方法存放在公共代码段中。
在这里插入图片描述
如果成员函数存放在公共的代码区时,我们要改变一个对象的属性时,编译器是怎样区分的呢,这里C++中通过引入this指针解决该问题,即:C++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变量的操作,都是通过该指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。所以每个函数都会多传一个指针参数指向该对象如下图所示,即通过this指针来区分是哪个对象调用成员函数。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值