精华内容
下载资源
问答
  • C++对象概念及定义

    千次阅读 2018-07-07 19:59:12
    一. 什么是面向对象?1. 面向对象的定义 面向...所以,对象也就可以看做是的具体实例,我们就可以把看做建房子的图纸,对象就可以看做建出来的房子。将对象作为程序的基本单元,将程序和数据封装在其中,以提高...

    一. 什么是面向对象?

    1. 面向对象的定义

            面向对象是软件开发的一种方法,它的主要思想就是:把整个世界看做是具有行为活动各种对象组成的。把数据以及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象其共性形成类。所以,对象也就可以看做是类的具体实例,我们就可以把类看做建房子的图纸,对象就可以看做建出来的房子。将对象作为程序的基本单元,将程序和数据封装在其中,以提高软件的重用性、灵活性、扩展性。


            要注意的是:C++不是纯面向对象的语言,而是基于面向对象的语言。因为C++包含C的部分,C是面向过程的语言。

    2. 面向对象的三大特性

            封装、继承、多态

    (1)封装性

            把数据和方法封装到一起,其中方法一般用函数实现。数据表示类的属性,函数则表示类的行为。而类的访问限定符public、private、protected等限定了访问的权限,达到封装的目的。

    (2)继承性

            通过继承,一个对象可以获得另一个对象的属性(包括函数),并且可以向其中加入一些自己的特征。通过继承得到的新类我们叫做“子类”或者“派生类”,被继承的类叫做“父类”或“基类”。

    (3)多态性

            多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。

    二. 类的声明及定义

    1. 关键字class/struct


            类可以通过class/struct去声明。但是对于class声明的类,它的默认属性为私有的(private);但对于struct声明的类,它的默认属性是公有的(public)。

            编写struct测试代码如下:

    #include <iostream>
    using namespace std;
    
    struct Person1
    {
        int b;
        void Display()
        {
            cout<<b<<endl;
        }
    };                                                                                                                                                    
    
    int main()
    {
        Person1 p1;
        p1.b = 6;
        p1.Display();
        return 0;
    }

            运行结果如下:


            编写class测试代码如下:

    #include <iostream>
    using namespace std;
    
    class Person
    {                                                                                                                                                     
        int a;
        void Display()
        {
            cout<<a<<endl;
        }
    };
    
    int main()
    {
        Person p;
        p.a = 5;
        p.Display();
        return 0;
    }

            运行结果如下:


            可以看到未指明访问限定符时,class声明的类中都是默认私有的属性,在类外无法访问私有变量及私有函数。

    2. C++的数据类型


    3. 三种访问限定符

    (1)public的成员可以从类外直接访问,private和protected属性的成员不可以从类外直接访问;

    (2)每个访问限定符可以在类内出现多次,它的作用域是从该限定符开始到下一个限定符出现或到类体结束;

    (3)类体中若没有访问限定符,根据声明的关键字是class/struct决定默认属性是private/public;

    (4)类的访问限定符体现了面向对象的封装性。

    4. 作用域


    (1)每个类都定义了自己的作用域。类的成员(成员函数、成员变量)都在类的作用域中,成员函数可以任意访问成员变量和其他成员函数;

    (2)对象可以通过“.”直接访问类的公有成员,指向对象的指针也可以通过“->”直接访问对象的公有成员;

    (3)在类外定义成员,需要使用“::”作用域解析符指明成员属于哪个类域。

    5. 定义一个简单的类

    (1)类内定义成员变量

    #include <iostream>                                                                                                                                   
    using namespace std;
    
    class Person                                                                                                                                          
    {
        public:
            void Display()//成员函数
            {
                cout<<_name<<"-"<<_sex<<"-"<<_age<<endl;
            }
        public://成员变量
            char* _name;
            char* _sex;
            int _age;
    };
    int main()
    {
        //将类实例化为一个对象
        Person p;
        p._name = "YoungJack";
        p._sex = "男";
        p._age = 25;
        p.Display();
    
        //可以通过指针修改
        Person* ptr = &p;
        ptr->_name = "满舒克";
        ptr->_sex = "男";                                                                                                                                 
        ptr->_age = 28;
        ptr->Display();
    
        return 0;
    }
    

    (2)类外定义成员函数

    #include <iostream>                                                                                                                                   
    using namespace std;
    
    class Person
    {
        public:
            void Display();//成员函数
        public://成员变量
            char* _name;
            char* _sex;
            int _age;
    };
    void Person::Display()
    {
        cout<<_name<<"-"<<_sex<<"-"<<_age<<endl;
    }
    
    int main()
    {
        //将类实例化为一个对象
        Person p;
        p._name = "YoungJack";
        p._sex = "男";
        p._age = 25;
        p.Display();
    
        //可以通过指针修改
        Person* ptr = &p;
        ptr->_name = "满舒克";
        ptr->_sex = "男";
        ptr->_age = 28;                                                                                                                                   
        ptr->Display();
    
        return 0;
    }

           两种方式的运行结果都一样,如下:


    三. 类的大小

    1. 类的大小

            每个对象的大小为类中所有成员变量的大小之和且遵循内存对齐原则。这里成员函数(不包括虚函数)并不计入对象的大小之中。因为,类的成员函数在被实例化的对象调用时,它是为所有对象公用,通过this指针和类的实例相关联,在编译时由编译器直接调用,与普通函数并没有什么区别,代码编译之后根本不在类的实例中,所以不占空间。

    2. 为什么要内存对齐?

            具体原理如下图所示:


    3. 类的大小的计算

            对于遵循内存对齐的原则,要遵循的规则在之前的结构体相关博客已经介绍过了,这里不再介绍,直接看代码:

    #include <iostream>
    using namespace std;
    
    class A
    {
        char ch; 
        double d;
    };
    
    class B
    {
        char ch; 
        A a;
        char ch2;
    };
    
    int main()
    {
        int size1 = sizeof(A);
        int size2 = sizeof(B);
        cout<<size1<<endl;
        cout<<size2<<endl;
        return 0;
    }                

            运行结果为:


    (1)对于类A,分析过程如下:

        1)首先ch占一个字节;

        2)Linux下的默认对齐数为4,所以要空3字节,对齐到4的1倍处,此时共4字节;

        3)然后d占8字节,刚好在4的整数倍处,此时共12字节;

        4)12字节刚好是最大对齐数4的整数倍,所以类A的大小为12字节。

    (2)对于类B,分析过程如下:

        1)首先ch占一个字节;

        2)Linux下的默认对齐数为4,所以要空3字节,对齐到4的1倍处,此时共4字节;

        3)然后类A的对象大小为12字节,刚好是4的整数倍,此时共16字节;

        4)然后ch2占1字节,再补3字节的空,使其对齐在4的整数倍处,此时共20字节;

        4)20字节刚好是最大对齐数4的整数倍,所以类B的大小为20字节。

    4. 空类的大小

            空类的大小为1字节,验证如下:

    #include <iostream>
    using namespace std;
    
    class A
    {
    
    };                                                                                                                                                    
    
    int main()
    {
        cout<<sizeof(A)<<endl;
        return 0;       
    }        
    

            可能大家会有疑问,空类的大小不应该是0字节吗?怎么会是1字节呢?它其实是起到一个“占位”的作用,用来表示该类存在过。




    展开全文
  • 对象的区别和联系

    千次阅读 2019-04-01 16:25:42
    是封装对象的属性和行为的载体,在Java语言中对象的属性以...联系对象的抽象,而对象的具体实例。 区别:  1,是一个抽象的概念,它不存在于现实中的时间/空间里,只是为所有的对象定义了抽象...

    类:类是封装对象的属性和行为的载体,在Java语言中对象的属性以成员变量的形式存在,而对象的方法以成员方法的形式存在。

    对象:Java是面向对象的程序设计语言,对象是由类抽象出来的,所有的问题都是通过对象来处理,对象可以操作类的基本属性和方法解决相应的问题。

    联系:类是对象的抽象,而对象时类的具体实例。

    区别:
     1,类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为。就好像“Person(人)”这个类,它虽然可以包含很多个体,但它本身不存在于现实世界上。
     2,对象是类的一个具体。它是一个实实在在存在的东西。
     3,类是一个静态的概念,类本身不携带任何数据。当没有为类创建任何对象时,类本身不存在于内存空间中。
     4,对象是一个动态的概念。每一个对象都存在着有别于其它对象的属于自己的独特的属性和行为。对象的属性可以随着它自己的行为而发生改变。

    展开全文
  • C#之让你彻底明白对象,实例化的区别及联系

    千次阅读 多人点赞 2018-11-29 11:05:05
    1,是一个抽象的概念,它不存在于现实中的时间/空间里,只是为所有的对象定义了抽象的属性行为。就好像“Person(人)”这个,它虽然可以包含很多个体,但它本身不存在于现实世界上。...

    一、前言

    在学习类的时候我们肯定离不开对象,它们之间的关系是非常紧密的,要想知道类那么就一定要知道对象,从对象入手慢慢向类延申,让你彻底明白类对象和类的联系又明白他们的区别。

    二、对象和类

    对象和类的区别

    1,类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为。就好像“Person(人)”这个类,它虽然可以包含很多个体,但它本身不存在于现实世界上。

     

    2,对象是类的一个具体。它是一个实实在在存在的东西。

     

    3,类是一个静态的概念,类本身不携带任何数据。当没有为类创建任何对象时,类本身不存在于内存空间中。

     

    4,对象是一个动态的概念。每一个对象都存在着有别于其它对象的属于自己的独特的属性和行为。对象的属性可以随着它自己的行为而发生改变。

     对象和类解释:

    1,对象:对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。

     

    2,类:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。

    类也可以说成是具有相同属性和共同行为的一组对象的集合。类里面可以定义有字段,属性和方法。

    对象和类的关系:

    类与对象的关系就如模具和铸件的关系,类的实力化的结果就是对象,而对对象的抽象就是类,类描述了一组有相同特性(属性)和相同行为的对象。

    类的组成

    类 = 数据 + 方法

     

    数据和方法是有机的结合,通过对象关联。

     

    对象O.方法F(参数),方法F可以访问对象O的数据

     

    注意:类中的方法在执行时访问的是对象的数据,不是类的数据,因为类本身并不占用存储空间

     

    class Animal{ }//这个是类
    
    Animial animal  = new Animal();//类的实例化就是对象

    类的关键词用class表示,定义类的关键字。

    Animal就是类的名称

     原则:

    1,类名称首字母记着要大写,多个单词则各个首字母大写。

    2,对外公开的方法需要用“public”修饰符。

     

    在这里已经有了类了。那么有类了我们该如何应用它呢。只需将类实例化一下就可以了。说的实例化了,就又又问题了,什么是实例化?请看概念:

     

    三、实例化

    实例就是一个真实的对象,比如说我们都是“人”,而你和其实就是“人”类的实例了。而实例化就是创建对象的过程,使用new关键字来创建。

     

    如以下实例,加入你要造一辆汽车,你设计了一个车的模型,把这个模型交过制作人员去加工,完成,产生出(一批)汽车模型就相当于程序中的类,成产出来的汽车就是对象,产生的这一过程就叫类的实例化。

    namespace 命名空间名称 
    
    {
    
    public class Car(类名a)//声明类
    
    {
    
    //创建一个对象 
    
    (Car)类名a (car)对象名a = new (Car)类名a();//类的实例化
    
    }
    
    
    
    public class 类名b
    
    {
    
    
    
    }
    
    } 

     

    总结到这里感觉还有许多不懂的地方,对象,类,实例化就分享到这里,如果有什么不对的地方还请指出,不甚感激。

    展开全文
  • 1.概念是对一组性质相同的事物的程序描述。 如果在定义中不指定是private或者public的,则系统默认为private的。 使用struct声明的,如果对其成员不作private或者public的声明,系统将其默认为...

    1.概念:

    类是对一组性质相同的事物的程序描述。


    如果类在定义中不指定是private或者public的,则系统默认为private的。


    使用struct声明的类,如果对其成员不作private或者public的声明,系统将其默认为public的,

    而使用class声明的类,如果不作声明,系统默认为private的。


    成员函数类外定义时,必须在函数名前面加上类名,予以限定。::是作用域的限定付,用它声明函数属于哪个类的。

    例如:::display()或者display() 则表示display函数不属于任何类,这个函数不是成员函数,而是全局函数,

    类函数必须现在类中做原型声明,然后在类外定义。


    程序设计的习惯:在类的内部对成员函数作声明,而在类外定义成员函数。如果一个函数,其函数体就只有2-3行,一般

    可在声明类时在类体重定义,多于3行的函数,一般在雷蹄内声明在类外定义。



    对象是类的一个实例。

    2.关系

    当我们提到车的时候,首先想到是车可以开,而且都有轮子,那么,我们就想到了一个车子类

    类是属性的集合,车子的属性:可以开,有重量,大小,颜色等等。

    但是,如果我说“你看,,,那个车子多漂亮!”当你顺着我指的方向看的时候,这就是一个实际存在的对象

    一个具体的车子。

    3.区别

    类是抽象的,不占内存空间,对象是具体的,占用存储空间。


    综上,类是事物的抽象,类的对象就是类的具体化,实例化。



    展开全文
  • Java中类与对象的关系区别

    千次阅读 2018-04-12 12:43:59
    对象就是一个真实世界中的实体,对象与实体是一一对应关系的,意思就是现实世界的每一个实体都是一个对象,所以对象是一个具体的概念对象的一个集合,对象的实例。而对象的产生在Java中是使用new来实现的...
  • Python中的的定义和对象的创建

    万次阅读 多人点赞 2018-08-16 17:35:59
    面向对象中两个重要的概念: 1. :对一事物的描述,是抽象的、概念上的定义。比如做石膏像的模型 2.对象:实际存在的该事物的每个个体,因而也称实例(instance)。比如石膏像 二者的关系:对象是由派生的、...
  • UML构造型的作用,主动概念,敏捷开发的含义对象图的适用场景以及它的优缺点 1.构造型的作用是什么? 构造型用来定义一些特定于某个领域或某个系统的构造块。用来扩展建模元素,增加建模元素的语义。构造型...
  • 面向对象概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是...
  • 对象的抽象就是的具体化就是对象,也可以说的实例化就是对象实际上就是一种数据类型。具有属性用数据结构来描述的属性。具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。 二...
  • 的声明的对象的定义理解:对象的封装、抽象、继承多态性四个特快性的概念对象的作用;面向对象和面向过程的程序构成。  了解:面向对象的软件开发。  重点、难点: 面向对象程序设计的方法特点;...
  • C++对象概念

    千次阅读 2018-06-10 17:31:13
    C++对象概念 面向对象程序设计 概念:(Object Oriented Programming,缩写:OOP)是一种程序开发的方法。 对象指的是的实例,将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、...
  • 实例说明类与对象的关系区别

    千次阅读 2017-11-23 13:43:34
    在面向对象编程中,是一个结构,这个结构定义属性和方法的集合。它可以被看作是一个模板。例如: class Item { public $itemType; /* e.g. this could be "Book" or "CD" */ public $price; public function ...
  • **接口和抽象联系和区别? 答:联系主要体现在: 抽象:** (1)一个中有抽象方法,这个就变成了抽象。 (2)抽象中class的前面必须有abstract修饰符。 (3)抽象中可以有普通方法,也可以有...
  • 面向对象编程(类与对象

    千次阅读 2018-10-22 23:45:32
    在我们调用产生一个空对象的时候,又会产生对象的名称空间,对象的名称空间和的名称空间存在某种联系,但是并不包含在的名称空间中。我们在调用对象的名称时,会先查找对象的名称空间,如果对象的名称空间中...
  • 创建一个时就创建了一种新的数据类型,使用这种类型来声明该类型的对象。 然而要获得一个对象需要两步, 第一, 必须声明该类型的一个变量,这个变量没有定义一个对象,它只是一个能够引用对象的简单变量。...
  • 理解类与对象,是java
  • java对象联系,区别

    千次阅读 2017-10-11 17:29:24
    将具有相同属性相同行为的一组对象称为。广义地讲,具有共同性质的事物的集合就称为。 在面向对象程序设计中,是一个独立的单位,它有一个类名,其内部包括成员变量,用于描述对象的属性;还包括的成员...
  • Java:类与对象及源文件声明规则

    千次阅读 2020-07-28 08:24:39
    文章目录声明类概念构造方法对象概念创建对象访问实例变量和方法源文件声明规则思考 声明 1)该文章部分内容整理自网上的资料,如不小心侵犯了大家的权益,还望海涵,并联系博主删除。 2)博主是萌新上路,文中如有...
  • 伴生和伴生对象的区别和联系 关系 伴生中主要编写非静态代码,伴生对象中主要编写静态代码,静态代码包括属性和方法。scala中取消了static关键字,因此静态代码只能写到伴生对象中。伴生对象也是单例对象,...
  • Java学习心得——对象与类

    千次阅读 2018-03-27 00:39:24
    Java 的类与对象 Java作为一门面向对象的语言,它支持很多的概念,例如:封装,多态,继承,对象等等。这篇文章里主要讲的是对象与类。什么是 比较好理解,可以”种类“,”类别“等概念联系起来理解。...
  • C++类与对象详解

    千次阅读 多人点赞 2015-06-04 20:52:11
    对象作为面向对象中重要部分,本文详细的介绍其中的内存管理、继承、虚函数多态、拷贝构造函数等基本原理,使大家对其原理有一个系统的认识
  • 类与对象的区别?

    万次阅读 多人点赞 2018-08-13 09:35:36
    对于初学者来说,类与对象之间的关系的非常模糊不清的,在这里跟大家分享一下,让初学者有所帮助。   一、概念是具有相同属性和服务的一组对象的集合。它为属于该的所有对象提供了统一的抽象描述,其...
  • 面向对象基本概念

    万次阅读 多人点赞 2019-02-06 21:56:15
    通过一个简单的外部接口外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。对象即为人对各种具体物体抽象后的一个概念,人们每天都要接触各种各样的对象,如手机就是一个对象。 面向...
  • 早期方法的不足: 早期的方法只使用一种系统的视角作为构造块,而没有容纳其他视角。 1、结构化分析和设计方法集中于将功能作为系统的构造块...为了克服传统开发方法的不足,面向对象方法解决问题的思路 是从现实世...
  • Java中对象的关系

    千次阅读 2020-07-29 22:14:58
    3、类与对象的关系 (1)是抽象的概念,仅仅是一个模板,比如说:“人”。 (2)对象是一个你能够看得到、摸得着的具体实体。 (3)定义了对象将会拥有的特征(属性)和行为(方法) (4)对象的类型,对象...
  • C++第五章_类与对象习题解答 精品文档 精品文档 收集于网络如有侵权请联系管理员删除 收集于网络如有侵权请联系管理员删除 精品文档 收集于网络如有侵权请联系管理员删除 第五章 类与对象习题 基本概念与基础知识自...
  • Java中的基本操作单元 - 对象

    千次阅读 多人点赞 2020-02-26 18:51:25
    其实大家可以先不联系程序,我们在对一大堆东西分类的时候自然是有一个标准的,符合某些特征的分到一,符合另外一些特征的分到另外一。在每个类别中,每一样东西都有相同的特征,但是又有所差别,每一样东西就...
  • Python中对象、方法、函数和属性的区别和理解前言一、对象、方法、函数和属性的区别和理解二、一个的简单案例和对各种概念的理解 欢迎学习交流: zengf.hou@bit.edu.cn 前言 相信很多刚刚初学 python 的...
  • *对象是什么与类联系? *定义了一系列的方法和属性,并提供了实际操作的细节,这些方法可以用来对属性进行加工 *对象含有的属性的值,这就是的实例化。正是由于属性的不同,才能区分不同的对象 *为了看清...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 204,547
精华内容 81,818
关键字:

对象与类的概念及联系