C++基础知识(类和对象)

 现实世界中,将事物的属性和行为表示出来,就可以抽象出这个事物。

        定义一个结构体用来表示一个对象所包含的属性,函数用来表示一个对象所具有的行为,这样就可以表示一个事物。在C中,行为和属性是分开的。

        属性和行为应该放在一起,一起表示一个具有属性和行为的对象。封装提供一种机制能够给属性和行为的访问控制权。

        所以说,封装包含两个方面:1)属性和变量合成一个整体;2)给属性和访问增加权限。

C中struct只有变量,C++中struct既有变量又有函数

class默认访问权限是private,struct默认访问权限是public。

访问权限------1、在类的内部(作用范围内),没有访问权限之分,所有成员可以互相访问;

                      2、在类的外部(作用域范围外),访问权限没有才有意义,public,protected,private

                      3、在类的外部,只有public修饰的成员才能被访问,在没有涉及继承与派生时,protected和private是同等级的

访问属性属性对象内部对象外部
public公有yesyes
protected受保护yesno
private私有yesno

C语言下的封装

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
 
struct Person
{
	char mName[64];
	
	int mAge;
	
};
 
void PersonEat(struct Person *p)
{
	printf("%s在吃人饭\n",p->mName);
}
 
void test01()
{
	struct Person p1;
	strcpy(p1.mName, "德玛西亚");
 
	PersonEat(&p1);
}
 
struct Dog
{
	char mName[64];
	int mAge;
};
 
void DogEat(struct Dog *dog)
{
	printf("%s在吃狗粮\n", dog->mName);
}
 
void test02()
{
	struct Dog d;
	strcpy(d.mName, "旺财");
	DogEat(&d);
 
	struct Person p1;
	strcpy(p1.mName, "老忘"); 
	DogEat(&p1);
}
//C语言封装  属性和行为分开处理  类型检测不够
int main(void)
{
	test02();
	system("pause");
	return 0;
}

C++下的封装

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
 
struct Person
{
	char mName[64];
 
	int mAge;
 
	void PersonEat()
	{
		cout << mName << "吃人饭" << endl;
	}
};
 
struct Dog
{
	char mName[64];
 
	int mAge;
 
	void DogEat()
	{
		cout << mName << "吃狗粮" << endl;
	}
};
 
//C++中的封装有严格类型转换检测  让属性和行为绑定到一起
//属性和行为作为一个整体来表示生活中的事物
//控制权限  public protected private
void test01()
{
	Person p1;
	strcpy(p1.mName, "老忘");
	p1.PersonEat();
 
	Dog d;
	strcpy(d.mName, "aa");
	d.DogEat();
}
 
//struct和class是一个意思,唯一的不同   默认权限struct是public
 
//如果不声明权限,class默认private
class Animal
{
	int m_Age;
	void eat(){
		m_Age = 100;
	}
public:
	int height;
protected:
	int weight;
};
 
//所谓私有权限 就是私有的成员在类内部可以访问,在类的外部不能访问
void test02()
{
	Animal an;
	//an.eat();
	an.height = 10;
}
 
 
int main(void)
{
	test01();
	system("pause");
	return 0;
}

将成员变量设置为私有private

          1)可赋予客户端访问属性的一致性;

          2)可细微划分访问控制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值