【转】类和对象的概念

本文深入浅出地介绍了C++面向对象编程的基础概念,包括类和对象的区别、封装、继承、多态等核心特性,以及类的定义、实例化和访问限定符的使用。

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

c++是基于面向对象的语言,并不是纯面向对象的语言,因为它包含c的部分,c是面向过程的语言

一、面向对象

概念:面向对象程序设计(OOP)是一种程序设计的泛型,同时也是一种程序开发的方法,它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性

二、类和对象的概念

1. 类:类是现实世界在计算机中的反映,它将数据和对这些数据的操作封装在一起(并没有开空间)


2. 对象:类的实例(占有实际的空间)

*****************

通俗解释:

人 就是一个类名,

你自己 就是人 这个类里的一个对象;

动物 就是一个类名

你自己 就是动物 这个类里的一个对象

类是封装好的,像一个模型;对象是有类实例化的,也就像一个具体的样本!类规定了对象的特征属性。

通俗来说吧,比如说“人”就是一个类,而你就是一个实例即对象!

******************



   
  1. class Student //类
  2. {
  3. public:
  4. Student()
  5. {}
  6. private:
  7. int _num;
  8. char* _name;
  9. int _age;
  10. };
  11. int main()
  12. {
  13. Student s; //对象-> 类的实例
  14. system( "pause");
  15. return 0;
  16. }

1)类相当于盖楼房的图纸一样,虽然定义了有哪些成员,但并没有实际的空间

2)类可以实例化出多个对象,实例化出的对象占有实际空间(用来存储成员变量)


三、类的三大特性:

1.封装    2.继承   3.多态

封装:函数的封装是一种形式,隐藏对象的属性和实现细节(函数内部),仅仅对外提高函数的接口和对象进行交互。

类的访问限定符可以协助其完成封装


四、类的三个访问限定符


1.public:公有的,类的成员可以从类外直接访问

2.private/protected:类的成员不能从类外直接访问

3.类的每个访问限定符可以多次在类中使用,作用域为从该限定符开始到下一个限定符之前/类结束

4.类中如果没有定义限定符,则默认为私有的(private)

5.类的访问限定符体现了类的封装性


因为_name是私有的,所以在类外不能使用,而_age,Eat()是公有的,所以在类外可以直接使用


五、类的定义

1.定义一个简单的类


2.类的对象可以直接通过 . 来访问类的公有成员,类的对象指针可以通过->来访问类的公有成员


   
  1. class person
  2. {
  3. public:
  4. void Display()
  5. {
  6. cout << _name << "-"<< _age << endl;
  7. }
  8. public:
  9. int _age;
  10. char* _name;
  11. };
  12. int main()
  13. {
  14. person p;
  15. p._age = 18;
  16. p._name = "peter";
  17. p.Display();
  18. person* ptr = &p;
  19. ptr->_age = 20;
  20. ptr->_name = "jack";
  21. ptr->Display();
  22. system( "pause");
  23. return 0;
  24. }

3.类外定义成员函数,需要使用::(作用域解析符)指明其属于哪个类


   
  1. class person
  2. {
  3. public:
  4. void Display(); //声明
  5. };
  6. void person::Display() //类外定义
  7. {
  8. //......
  9. }

六、类的大小

类的成员函数放在公共代码区,所有该类的对象共享这些成员函数,每个对象的大小为类内成员变量的大小之和,遵循内存对齐原则


1.为什么要内存对齐?

答:为了提高程序的性能,方便cpu访问内存,处理器并不是一个字节一个字节来访问内存,一般是4个字节或8个字节

2.空类占多少个字节?为什么?

答:空类占1个字节,占位用,告诉系统我这里定义了一个类,虽然它是空的



转自:https://blog.youkuaiyun.com/audience_fzn/article/details/80399430
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值