精华内容
下载资源
问答
  •   一个对象作为另一个数据成员。...一个中的数据成员除了可以是int, char, float等这些基本的数据类型外,还可以是某一个的一个对象。用子对象创建新。   &n...
      一个类的对象作为另一个类的数据成员。
     
         一个类中的数据成员除了可以是int, char, float等这些基本的数据类型外,还可以是某一个类的一个对象。用子对象创建新类。
     
         在C++中,当把一个类的对象作为新类的数据员时,则新类的定义格式可表示为:
     
    class X
     
    { 类名1  成员名1;
     
      类名2  成员名2;
     
      ……
     
      类名n  成员名n;
     
      ……//其它成员
     
    };
     
    (3)如果一个类A的对象作为另一个类B的数据成员,则在类B的对象创建过程中,调用其构造函数的过程中,数据成员(类A的对象)会自动调用类A的构造函数。
     
    但应注意:如果类A的构造函数为有参函数时,则在程序中必须在类B的构造函数的括号后面加一“:”和被调用的类A的构造函数,且调用类A的构造函数时的实参值必须来自类B的形参表中的形参。这种方法称为初始化表的方式调用构造函数。如:以上面定义的类X为例,在对类X的对象进行初始化时,必须首先初始化其中的子对象,即必须首先调用这些子对象的构造函数。因此,类X的构造函数的定义格式应为:
     
    X::X(参数表0):成员1(参数表1),成员2(参数表2),…,成员n(参数表n)
     
    { ……}
     
    其中,参数表1提供初始化成员1所需的参数,参数表2提供初始化成员2所需的参数,依此类推。并且这几个参数表的中的参数均来自参数表0,另外,初始化X的非对象成员所需的参数,也由参数表0提供。
     
    在构造新类的对象过程中,系统首先调用其子对象的构造函数,初始化子对象;然后才执行类X自己的构造函数,初始化类中的非对象成员。对于同一类中的不同子对象,系统按照它们在类中的说明顺序调用相应的构造函数进行初始化,而不是按照初始化表的顺序。












    以下定义了三个Student、Teacher和Tourpair,其中Student类的对象和Teacher类的对象作为了Tourpair的数据成员,观察对象的构造过程和构造函数被执行的顺序。
     

    include <iostream.h>

     
    class Student
     
    { public: 


       Student()
     
        { cout<<”construct student.\n”;
     
           semeshours=100;
     
           gpa=3.5;   }   


    protected:
     
         int semeshours;
     
         float gpa;
     
    };
     
    class Teacher
     
    { public:
     
         Teacher()
     
       { cout<<”construct Teacher.\n”; 


        }
     
     };
     
    class Tourpair
     
    {public:
     
         Tourpair()
     
         {cout<<”construct tourpair.\n”;
     
          nomeeting=0;  }
     
      protected:
     
          Student student;
     
          Teacher teacher;
     
          int nomeeting;
     
     };
     
    void main()
     
    {Tourpair tp;
     
    cout<<”back in main.\n”; }
     
    其执行结果是:
     
       construct student.
     
       construct teacher.
     
       construct tourpair.
     
       back in main.
     
          由此可见:主函数main()运行开始时,遇到要创建Tourpair类的对象,于是调用其构造函数Tourpair(),该构造启动时,首先分配对象空间(包含一个Student对
     
    象、一个Teacher对象和一个int型数据),然后根据其在类中声明的对象成员的次序依次调用其构造函数。即先调用Student()构造函数,后调用Teacher()构造函数,最后才执行它自己的构造函数的函数体。
     
         由于上例中Tourpair类的数据成员student和teacher的构造函数都是无参函数,所以系统在构造student和teacher对象时会自动调用各自的构造函数Student()和Teacher(),而不需要用初始化表的方式去调用。
     
    【例3-7】试分析以下程序的执行结果:
     

    include <iostream.h>

     

    include <string.h>

     
    class Student
     
    { public:
     
       Student(char *pName=”No name”)
     
          { cout<<”构造新同学:”<<pName<<endl;
     
             strncpy(name,pName,sizeof(name)); char * strncpy(char *dest, char *src, size_t n); 将字符串src中最多n个字符复制到字符数组dest中(它并不像strcpy一样遇到NULL才停止复制,而是等凑够n个字符才开始复制),返回指向dest的指针。              C语言中判断数据类型长度符
     
             name[sizeof(name)-1]=’\0’;  


            }
     
     Student(Student &s)
     
          { cout<<”构造copy of “<<s.name<<endl;
     
             strcpy(name, ” copy of “);  extern char *strcpy(char *dest,char *src);    把src所指由NULL结束的字符串复制到dest所指的数组中
     
             strcat(name,s.name);    extern char *strcat(char *dest,char *src);          把src所指字符串添加到dest结尾处(覆盖dest结尾处的’\0’)并添加’\0’。
     
             }
     
    ~Student()
     
     { cout<<”析构 “<<name<<endl; }
     
        protected:
     
        char name[40];  };
     
    class Tutor
     
    { public: 


           Tutor(Student &s):student(s)//此为初始化表,调用
     
                                                         //Student的拷贝构造函数
     
           { cout<<”构造指导教师 \n”;  }
     
       protected:
     
            Student student;
     
     };
     
    void main()
     
    {  Student st1;   //此处调用Student的构造函数Student(char  


               *pName=”No name”)
     
       Student st2(“zhang”); //同上
     
       Tutor tutor(st2); //此处调用Tutor的构造函数Tutor(Student &s)
     
       //在构造tutor对象的过程中,用初始化表调用
     
       //Student类的拷贝构造函数Student(Student &s)
     
    }
     
    执行结果如下:
     
    构造新同学:No name
     
    构造新同学:zhang
     
    构造copy of zhang
     
    构造指导教师
     
    析构  copy of zhang
     
    析构 zhang
     
    析构 No name
     
    3.2.7 利用初始化表对常量数据成员或引用成员提供初值
     
         如前所述,构造函数可对对象的数据成员进行初始化,但若数据成员为常量成员或引用成员时,就有所不同,如:
     
    class Sillyclass
     
    { public :
     
    Sillyclass()   // 此构造函数对成员ten和refi的初始化错误。
     
        { ten=10;
     
           refi=i; }
     
    protected:
     
        const int ten;   //常量数据成员ten
     
        int &refi;         //引用refi
     
    };
     
    说明:
     
    1. 造成以上错误的原因是在Sillyclass类的构造函数进入之后(开始执行其函数体时),对象结构已经建立,数据成员ten和refi已存在,而其数据成员ten为const,而refi为引用,所以在构造函数体内不能再对其指派新的值。
     
    2. 解决以上问题的方法是利用初始化表:在构造函数的括号后面加一“:”和初始化表,初始化表的格式是:
     
    数据成员名(值),如果有多个时,需要用逗号隔开。
     
    【例3-8】 类employee中包括私有数据成员x, 和2个公有函数成员example、show。程序中使用初始化表是x(215)。
     

    include <windows.h>

     

    include <iostream.h>

     
    // 定义类 employee
     
    class  employee
     
    {private:
     
         const int x;
     
      public:
     
         employee ();
     
         void show(); 


     };
     
    // employee的类外定义
     
    employee :: employee () : x (215)   // 初始化表
     
    {                   }
     
    // show()的定义。
     
    void employee :: show()
     
    {  cout << “\n    x的值是:”<< x << endl; }
     
    // 主函数
     
    void main()
     
    {   //生成对象并为x赋予初始值
     
       employee obj;
     
         //调用show显示x的值
     
       obj.show();
     
    }

    展开全文
  • 数据数据元素、数据项、数据对象的理解

    万次阅读 多人点赞 2018-04-09 16:18:21
    理解数据结构与算法时,觉得大多数的书上讲的定义特别抽象,数据数据元素...即人员表是一个数据对象,课程表是一个数据对象而每张表中的每一行就称为数据元素而姓名,性别,身高,课程代号,课程名就称为数据项...

    理解数据结构与算法时,觉得大多数的书上讲的定义特别抽象,

    数据、数据元素、数据项、数据对象这四个概念特别难懂

    本人理解如下:

    假设有两张表,A表为人员表,B表为课程表,这两张表就是数据



    而单独的一张表就称为数据对象,即人员表是一个数据对象,课程表也是一个数据对象

    而每张表中的每一行就称为数据元素

    而姓名,性别,身高,课程代号,课程名就称为数据项

    展开全文
  • 实例化了两个坐标对象 然后放到Line里作为 private 成员变量了———————————————————————— 下面是我自己敲的代码 总共有5个文件 首先是包含main函数的cpp文件#i

    在慕课网学习类的封装
    看着视频跟着老师敲代码感觉很简单
    关掉视频自己敲
    敲到一半发现敲不动;
    然后又反复的看了几遍视频
    最后知道了自己不会的原因
    这里写图片描述
    这是要求
    其实老师是
    实例化了两个坐标类的对象
    然后放到Line类里作为 private 成员变量了

    ————————————————————————
    下面是我自己敲的代码
    总共有5个文件
    首先是包含main函数的cpp文件

    #include "stdafx.h"
    #include<iostream>
    #include<cstdlib>
    #include"Line.h"
    using namespace std;
    
    
    int main()
    {
         Line *p = new Line;
         delete p;
    
        return 0;
    }

    其次是Line.h文件

    #pragma once
    #include"stdafx.h"
    #include"dian.h"
    
    class Line
    {
    public:
        Line();
        ~Line();
    
        void setA(int x, int y);
        void setB(int x, int y);
    
        void printInfo();
    
    
    private:
        dian A;      //类A的对象可以成为类B的数据成员
        dian B;
    };

    然后是line.cpp文件

    #include"stdafx.h"
    #include<iostream>
    #include"Line.h"
    using namespace std;
    
    Line::Line()
    {
        cout << "Line的构造函数被执行了" << endl;
    }
    Line::~Line()
    {
        cout << "Line的析构函数被执行了" << endl;
    }
    
    void Line::setA(int x, int y)
    {
        A.setX(x);
        A.setY(y);
    }
    void Line::setB(int x, int y)
    {
        B.setX(x);
        B.setY(y);
    
    }
    
    void Line::printInfo()
    {
        cout << "点A的坐标是:" << "(" <<A.getX() << "," << A.getY() << ")" << endl;
        cout << "点B的坐标是:" << "(" << B.getX() << "," << B.getY() << ")" << endl;
    }
    

    dian.h文件

    #pragma once
    #include"stdafx.h"
    
    class dian
    {
    public:
        dian();
        ~dian();
    
        void setX( int x);
        void setY( int y);
    
        int getX();
        int getY();
    
    
    private:
        int m_X;      //表示任意一个点的X坐标
        int m_Y;
    };
    
    

    dian.cpp文件

    #include"stdafx.h"
    #include<iostream>
    #include"dian.h"
    using namespace std;
    
    dian::dian() 
    {
        cout << "点的构造函数被执行了" << endl; 
    }
    dian::~dian()
    {
        cout << "点的析构函数被执行了" << endl;
    }
        void dian :: setX(int x)
        {
            m_X = x;
        }
        void dian::setY(int y)
        {
            m_Y = y;
        }
    
        int dian::getX()
        {
            return m_X;
        }
        int dian::getY()
        {
            return m_Y;
        }
    
    
    

    **

    实例化对象A时 ,如果对象A有对象成员B,那么先执行对象B的构造函数,在执行A的构造函数

    **

    展开全文
  • 面向对象数据模型

    千次阅读 2018-03-28 09:22:25
    所谓面向对象数据模型指属性和操作属性的方法封装在称为对象的结构中的模型。可以通过将一个对象嵌套或封装在另一个里来表示间的关联,新的对象类可以从更一般化的对象中导出,如:以下是描述面向对象数据...

    在很多领域中,一个对象可以由多hen个属性来描述,而其中某些属性本身又是另一个对象,也有自身的内部结构。例如,计算机辅助设计(CAD)的图形数据,多媒体的应用的图形、声音和文档等。

    所谓面向对象数据模型指属性和操作属性的方法封装在称为对象类的结构中的模型。可以通过将一个对象类嵌套或封装在另一个类里来表示类间的关联,新的对象类可以从更一般化的对象类中导出,如:


    以下是描述面向对象数据模型的几个概念。

    1对象 对象是对一组信息及其操作的描述。现实世界中实体的模型化,和记录的概念相似,但更加复杂。

    一个对象对应着E-R模型中的一个实体,面向对象类型的基础将一个对象的相关数据和代码封装为一个单元,其内容对外界是不可见的。

    深圳IT外包

    2 类(对象类)

    类是类似对象的集合(相似的对象组成一个类)。面向对象的数据模型中类的概念对应于E-R模型中实体集概念。

    3类层次

    一个面向对象数据库模型通常需要很多的类,然而,有些类是相似的。为了表示类之间的相似性,我们把类放入一个特殊化层次(ISA)中。

    一个系统中,所有的类和子类组成一个树形的类层次。类层次的概念实际上类似于E-R模型中特殊化层次的概念。在类层次中,一个类继承其直接或间接祖先的所有属性和方法。所谓继承性是指允许不同类的对象共享它们公共部分的结构和特征。继承性可以用超类或子类的层次联系实现。

    可用ISA指出一个类是另一个类的特殊化,类的特殊化称为子类(Subclass).例如,银行系统中,employee是person的一个子类,是teller的超类(Superclass),person是employee的超类。

    4对象标识

    创建对象时,系统为每一个对象赋予一个唯一的标识。这个标识称为对象标识。标识的形式包含以下几种。

    (1)值(value):用于标识的一个数据值。这种形式的标识常在关系数据库系统中使用。例如,一个元组的主码标识了这个元组。

    (2)名称(name):用于标识一个用户提供的名称。这种形式的标识常用于文件系统中的文件。不管文件的内容是什么,用户会给每个文件赋予一个名称来唯一标识这个文件。

    (3)内置(Built-in):数据模型或程序设计语言中的一种标识方法,它不需要用户提供的标识符。这种形式标识常在面向对象系统中使用,对象创建时系统自动赋予每个对象标识符。

    5对象包含

    对象之间的引用可以用于对现实世界中的不同概念进行模拟,对象包含是其中之一。下图是自行车设计数据库的包含层次,每辆自行车的设计包括车轮、车架、车闸和齿轮。车轮又包括轮框、一套辐条和l轮胎。该设计的每个构建可以建模为一个对象,同时构建间的包含可以建模为对象间的包含。



    深圳蓝快IDC

    包含其他对象的对象称为复杂对象(复合对象),这种情况下出现对象间包含层次。

    在面向对象系统中,包含是一个重要概念,因为它允许不同的用户用不同的粒度来观察数据。一个自行车设计师只专注于自行车的实例,而对于一个市场职员来说,所关心的只是自行车价格。

    展开全文
  • 1、在c++中,当把一个对象作为另一...2、如果一个A的对象作为另一个B的数据成员,则在B的对象创建过程中,调用其构造函数的过程中,数据成员(A的对象)会自动调用A的构造函数。     但是应注...
  • 基本数据类 Java中的基本数据类型不是面向对象的,它们只是纯粹的数据,除了数值本身的信息之外,基本类型数据不带有其他信息或者可操作方法。 类型 字节数 byte 1 short 2 int 4 long 8 char 2 ...
  • 数据数据元素、数据项、数据对象的介绍和理解

    万次阅读 多人点赞 2019-06-18 20:57:43
    最近在读《大话数据结构》这本书 第一章上面的介绍数据结构相关概念 总结如下图...数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整形、...
  • C++类对象共享数据的5种实现方法

    万次阅读 多人点赞 2017-09-30 21:38:14
    C++中数据与行为做了封装,使得私有数据成员不能在体外被访问,同时类对象之间不能互相访问对方的私有成员,而在有些情况下,数据既需要保持其私有性,又需要其有共享性,以下将给出两种方式的实现。...
  • CAN笔记(21) 服务数据对象

    万次阅读 2019-09-11 14:36:19
    服务数据对象、通讯原则、快速 SDO 协议、普通 SDO 协议
  • CAN笔记(20) 过程数据对象

    万次阅读 2019-09-11 11:48:25
    过程数据对象、CAN-ID定义、传输形式、通信参数、映射参数
  • 数据数据对象数据元素、数据项 我们在学习数据结构时首先熟悉的一定是这四个名词,那么在数据家族里这四位成员都是什么关系呢? 严蔚敏的数据结构c语言版一书中解释是这样的: 数据:是客观事物的符号表示,是...
  • 一、数据数据元素、数据对象数据结构的定义 1、数据的定义 定义一:数据是客观事物的符号表示。 学号 姓名 语文 数学 C语言 6201001 张三 85 54 ...
  • //数据结构基本概念 #include&lt;iostream&gt; using namespace std; /* 数据 – 程序的操作对象,用于描述客观事物 数据的特点: 可以输入到计算机 ...数据元素:组成数据对象的基本单位 数据对...
  • Java 对象和方法

    万次阅读 2019-10-13 15:57:34
    是定义对象形式的模板,指定了数据以及操作数据的代码。 Java中使用的规范来构造对象,而对象的实例。 是逻辑抽象的,只有的实例——对象才是内存中的物理表示。 一般都包含方法和变量,通过class创建...
  • Weka数据挖掘——分类

    千次阅读 2016-01-19 16:53:57
    定义: 分类就是得到一个函数或...该步骤也称为是有监督的学习,基于训练集而到处模型,训练集合是已知类别标签的数据对象。 第二步使用模型对数据对象inxing分类。首先评估对象分类的准确度或者其他指标,如果可以接受
  • 对象

    千次阅读 2015-07-10 08:07:36
    Ø 是用户定义类型,也称为类类型 Ø 每个包含数据说明和一组操作数据或传递消息的函数。的  实例称为对象 Ø C++的由C语言的结构类型演变而来。本章首先介绍结构类型,  然后讨论C++的对象
  • C++编程中经常出现两个不同的类对象之间相互访问数据的需要,但是成员变量不是public形式,无法直接访问相应的变量,抛开全局变量不谈,常用的方法有:封装留下的接口函数、友元机制、静态成员变量。 1、通过...
  • JAVA面向对象对象

    千次阅读 多人点赞 2015-12-20 09:30:41
    Java是一种面向对象的编程语言,面向对象在整个Java的学习中属于重中之重,从这一篇博客开始,将逐步为大家介绍Java面向对象的相关知识,这一偏将为大家介绍对象的概念以及如何定义和创建对象。 一、对象...
  • 原 简单的介绍数据结构的里的(数据 数据元素 数据数据对象) 2017年10月30日 14:32:56 莫欺少年知识少 阅读数:2174更多 &amp;...
  • 【C++】C++对象、构造函数和析构函数

    千次阅读 多人点赞 2018-06-03 20:32:37
    它即可包含描述事物的数据,又可包含处理这些数据的函数,在程序运行时是被用作样板来建立对象的。所以要建立对象,首先必须定义。 定义 定义一个的一般格式为: class 类名{ private: 成员表1; public:...
  • 数据挖掘——分类

    万次阅读 多人点赞 2018-10-10 21:52:21
    分类:一种数据分析形式,它提取刻画重要数据类的模型。这种模型叫分类器,进而预测分类的(离散的、无序的)标号。 相关概念解释 训练集:由数据库元组和与它们相关联的标号组成。 元组X用n维属性向量...
  • c++之&对象

    千次阅读 2018-02-08 18:10:02
    C++  &amp; 对象C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。是 C++ 的核心特性,通常被称为用户定义的类型...这实际上并没有定义任何数据,但它定义了的名称意味着什么,就...
  • [C/C++]详解C++的对象

    万次阅读 多人点赞 2021-05-24 13:09:01
    是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。对象是具有类型的...在C++中的结构体内不仅可以定义变量,也可以定义函数。在C++中常用class来代替struct struct Stud
  • java中什么是?什么是对象

    万次阅读 多人点赞 2018-06-03 19:29:55
    首先什么是对象呢?可谓是万物皆对象对象是客观存在的...在计算机的世界里面,计算机关注的事数据信息,我们描述数据信息的时候一定要要描述数据类型,对象就是具体的数据信息,是信息的数据类型。对象的属性...
  • Java 中的对象

    千次阅读 2019-06-02 18:19:58
    对象中的数据称为实例域(instance field), 操纵数据的过程称为方法(method)。 对于每个特定的实例(对象)都有一组特定的实例域值,这些值的集合就是这个对象的当前状态( state )。 1. 封装性 封装性:将...
  • 面向对象——

    千次阅读 2020-04-07 19:13:16
    :存储数据一种结构体,是面向对象编程的基础。 定义的格式:[访问修饰符] [的属性] 关键字(class) 的名字(首写字母必须大写)如:public class DemoStudent{} 备注:是创建对象的模板,只有有了...
  • 加载机制,就是虚拟机把数据从class文件加载到内存,并对数据进行校检,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型的过程。 JVM的加载机制,规定一个有且只有一个加载器对它进行加载。...
  • 对象的区别

    万次阅读 2013-03-08 17:24:58
    笔试题之三:对象的区别 对象的抽象,对象的具体实例。 是抽象的,不占用内存,而对象是具体的,占有内存空间。...静态联编支持的多态性称为编译时的多态性,称静态多态性,它可以通过函数重
  • Python学习笔记(九):对象

    万次阅读 热门讨论 2021-02-10 01:16:44
    (class)和对象(object,称为实例,instance),可以理解成某种概念,对象是一个具体存在的实体 的定义 class 类名: 执行语句... 变量... 方法... Python语法要求:类名只要是一个合法的标识符...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 872,952
精华内容 349,180
关键字:

对象的数据也可以称为类的