【C++---2】类与对象(上)

本文深入探讨C++中类的定义与使用,包括成员函数、成员变量、封装、类的大小、this指针等核心概念,解析类的声明与实现,及成员函数的调用机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类的定义:

class classname
{	
		//类体:由成员函数和成员变量组成
}:	    //分号不能省略

一般情况下,将声明放在.h文件中,类的定义放在,cpp文件中

代码实现:

class.h

#pragma once

class Family
{
public:

		void showinfo();

		void insertnember(char* _name, char* _gender, int age);

public:

		char _name[1024];
		char _gender[1024];
		int _age;
};

class.cpp

#define _CRT_SECURE_NO_WARNINGS
#include "class.h"
#include<iostream>
#include <string.h>

using namespace std;

void Family::insertnember(char* name, char* gender, int age)
{
		strcpy(_name, name);
		strcpy(_gender, gender);
		_age = age;
}

void Family::showinfo()
{
		cout << _name << " " << _gender << " " << _age << " " << endl;
}

int main()
{
		Family me,you;
		me.insertnember("AAA", "男", 23);
		you.insertnember("BBB", "女", 21);

		me.showinfo();
		you.showinfo();

		system("pause");
}

通过使用访问限定符,通过访问权限选择性的将其接口供给外部的用户使用

class的默认访问权限为private,struct为public(因为struct要兼容c)

在这里插入图片描述

		Q:C++中class和struct和区别是什么?
		A:C++需要兼容C语言,所以C++中的struct可以定义结构体也可以定义类,struct定义出来的类成员
		  访问方式默认是public,而class定义出的默认访问方式是private

封装:

隐藏对象的具体属性和具体实现的细节,仅对外展示公开接口和对象交互

类的大小:

一个类的大小实际就是成员变量大小的和,也满足结构体内存对齐规则,空类也要占用一个字节来进行标识这个类

空类一个字节(主流编译器)相当于占位符,区分该类创建的不同对象

如果有3个对象,也是空类,占一个字节,三个对象存放在main函数中,占用三个字节

this指针:

		Q:在调用成员函数的时候,编译器是如何得知调用的就是当前对象而不是其他对象呢?
		A:C++编译器给每个"成员函数"都增加了一个隐藏的指针函数,该指针指向当前对象,这个操作对于用
		  户是透明的,编译器自动完成

this指针的特性:

this指针的类型是类类型* const
只能在"成员函数"的内部使用
this指针本质是一个成员函数的形参,对象调用成员函数时,将对象地址作为实参传递给this指针
this指针的传递由ecx寄存器自动传递

		Q:this指针存在哪里?
		A:ecx寄存器中(编译器不同可能结果不同)

		Q:this指针可以为空吗?
		A:可以,this传入的函数如果不调用任何函数,不会报错,如果函数内部调用this指向对象,那么
		  this如果为空,就会报错
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值