C++类和对象的基本概念

2023-01-09 15:06:10 浏览数 (1)

目录

1.c和c 中struct的区别

2.类的封装

3.类的访问权限


1.c和c 中struct的区别

c语言中结构体中不能存放函数,也就是数据(属性)和行为(方 法)是分离的 c 中结构体中是可以存放函数的,也就是数据(属性)和行为 (方法)是封装在一起的

代码语言:javascript复制
#define _CRT_SECURE_NO_WARNINGS 
#include <iostream>
using namespace std;
//c语言不能放函数
struct _stu
{
	int a;
	int b[5];
};
//c  中可以放函数
struct _stu1
{
	int a;
	int b[5];
	void print_stu()
	{
		cout << a << endl;
	}
};
struct student
{
    //学生的属性和数据
    int age;
    int id;
	char name[256];
	//操作属性的叫做 方法或行为‐函数
	void print()
	{
		cout << age << id << name << endl;
	}


 };
void test01()
{
	student obj;
	obj.age = 10;
	obj.id = 20;
	strcpy(obj.name, "lucy");
	obj.print();
 }
int main()
{
	test01();
	return 0;
}

2.类的封装

c语言中表示事物时,将属性和行为分离,有可能行为调用出错

比如你先定义一个人的属性和行为

代码语言:javascript复制
struct Person
{
	int age;
	char name[128];
};
void Person_eat(struct Person *p)
{
	printf("%s 在吃饭n", p->name);
}

然后定义一个狗的属性

代码语言:javascript复制
struct Dog
{
	int age;
	char name[128];
};
void Dog_eat(struct Dog* p)
{
	printf("%s 在吃狗粮n", p->name);
}

而测试的时候可以这样 

 调用了人的属性,在调用狗的行为

代码语言:javascript复制
void test01()
{
	struct Person p1;
	p1.age = 20;
	strcpy(p1.name, "bob");
	Dog_eat(&p1);
}

c 对事物的封装

因为c 中struct里面可以存放函数,也就是行为,就不会存在上述情况

c 将事物的属性和行为封装在一起

’类和结构体的一个区别在于,类对成员可以进行访问的权限控 制,结构体不可以

类 = 类型 (事物的行为和属性) 类实例化出来的变量叫对象

类中的函数 可以访问类里面的成员

结构体中所有成员默认都是公有的 类中的所有成员默认是私有的,也可以修改成员的访问权限

代码语言:javascript复制
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;

//struct 
//类中的所有成员 访问权限都是私有的 private
class Person
{
 public://共有的
     //类中的所有成员 访问权限都是私有的 private
	//属性
	int age;
	char name[128];
	//行为
	void Person_eat()
	{
		printf("%s 吃饭n", name);
	}

};
struct Dog
{
	//属性
	int age;
	char name[128];
	//行为
	void Dog_eat()
	{
		printf("%s 吃饭n", name);
	}

};
void test01()
{
	Person p1;
	p1.age = 10;
	strcpy(p1.name, "lucy");
	p1.Person_eat();
}
int main()
{
	test01();
}

3.类的访问权限

代码语言:javascript复制
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <string.h>
using namespace std;
class person
{
public:
	int  mTall;  // 多高可以让外人知道
protected:
	int mMoney; // 多少钱,只能让儿孙孩子 子类可以访问
private:
	int mAge; //年龄不想让外人知道

	void show()
	{
		cout << mTall << " ";
		cout << mMoney << " ";
		cout << mAge << " ";
	}
};

void test01()
{
	person p;
	p.mTall = 180;
}
int main()
{
	test01();

	return 0;
}

尽量设置成员变量为私有权限

优点:

对变量的设置时的控制 可以给变量设置只读权限 可以给变量设置只写权限 可以给变量设置可读可写权限

0 人点赞