C++中类和对象

1. c和c++中struct的区别

1.1 c语言中结构体中不能存放函数,也就是数据(属性)和行为(方法)是分离

1.2 c++中结构体中是可以存放函数的,也就是数据(属性)和行为(方法)是封装在一起的

代码实现 

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
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语言对事物的封装

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

代码实现 

#include <stdio.h>
//表示人
struct Person
{
	int age;
	char name[128];
};
void Person_eat(struct Person *p)
{
	printf("%s 在吃饭\n",p->name);
}

//表示dog
struct Dog
{
	int age;
	char name[128];
};
void Dog_eat(struct Dog *p)
{
	printf("%s 在吃粑粑\n", p->name);
}


void test01()
{
	struct Person p1;
	p1.age = 20;
	strcpy(p1.name,"bob");
	Person_eat(&p1);

	struct Dog d1;
	d1.age = 7;
	strcpy(d1.name,"旺财");
	Dog_eat(&d1);

	Dog_eat(&p1);//人 调用了狗的行为
}

int main()
{
	test01();
	return 0;
}

 3. c++对事物的封装

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

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

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

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

 代码实现

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
using namespace std;
//c++中对事物的封装 将属性和行为封装在一起
//类  将事物抽象成属性和行为,并且封装在一起
//结构体中所有成员默认都是公有的  类中的所有成员默认是私有的,也可以修改成员的访问权限
// struct  Person
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();

	Dog d1;
	d1.age == 6;
	strcpy(d1.name,"旺财");
	d1.Dog_eat();	
}


int main()
{
	test01();
}

3. 类中成员权限

访问属性属性对象内部对象外部
public公有可访问可访问
protected保护可访问不可访问
private私有可访问不可访问

代码实现

class person
{
public: //公有的  类内类外都可访问
    int mTall;
protected: //保护的  类外不可访问,类内可以访问,子类可以访问
    int mMoney;
private: //私有的  类外不可访问,类内可以访问,子类不可访问
    int mAge;

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

void test01()
{
    person p{};
    p.mTall = 100;
    cout << p.mTall << " " << endl;
}

4.  设置成员变量为私有权限

优点:

4.1 对变量的设置时的控制

4.2 可以给变量设置只读权限

4.3 可以给变量设置只写权限

4.4 可以给变量设置可读可写权限

 代码实现

class AccessLevels
{
public:
    //对只读属性进行只读访问
    int getReadOnly()
    {
        return readOnly;
    }
    //对读写属性进行读写访问
    void setReadWrite(int val)
    {
        readWrite = val;
    }
    int getReadWrite()
    {
        return readWrite;
    }
    //对只写属性进行只写访问
    void setWriteOnly(int val)
    {
        writeOnly = val;
    }
private:
    int readOnly; //对外只读访问
    int noAccess; //外部不可访问
    int readWrite; //读写访问
    int writeOnly; //只写访问
};

 

  • 25
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值