C++类与对象(2)——类的组合

当我们创建一个类时,我们总是习惯用C++的基本数据类型作为类的组成部件。但实际上类的成员数据既可以是基本类型也可以是自定义类型,当然也可以是类的对象。这就是类的组合,它描述的就是一个类内嵌其他类的对象作为成员的情况,它们之间的关系是一种包含于被包含的关系。

当创建类的对象时,如果这个类具有内嵌对象成员,那么各个内嵌对象将首先被自动创建,

组合构造函数定义的一般形式:

类名::类名(形参表):内嵌对象1(形参表),内前对象2(形参表)......

{类的初始化}

其中“内嵌对象1(形参表),内前对象2(形参表)......”称为初始化列表,其作用是对内嵌对象进行初始化。

例如

//创建Point类
class Point {
public:
    Point(float xx,float yy) {
        x = xx;
        y = yy;
    }
    int getX() { return x; }
    int getY() { return y; }
private:
    float x, y;
};
//创建Rectangle类,
class Rectangle {
public:
        //构造函数,将传入的形参xp1赋值给p1,xp2赋值给p2
    Rectangle(Point xp1,Point xp2):p1(xp1),p2(xp2){

    }
    void ZC() {
        float Chang;
        Chang = abs((p1.getX() - p2.getX()) + (p1.getY() - p2.getY())) * 2;
        cout << "The ZHOUCHANG of the rectangle is :" << Chang << endl;
    }
    void Area() {
        float Ar;
        Ar = abs(p1.getX() - p2.getX())*abs(p1.getY() - p2.getY());
        cout << "The Area of the rectangle is :" << Ar << endl;
    }

private:
    Point p1, p2;
};    

在创建一个组合类对象时, 不仅它自身的构造函数的函数体将被执行,而且还将调用其内嵌对象的构造函数,调用顺序如下:

(1)调用内嵌对象的构造函数,调用顺序按照内嵌对象在组合类的定义中出现的次序,注意:内前对象在构造函数的初始化列表中出现的顺序与内嵌对象构造函数的调用顺序无关。

(2)执行本类构造函数的函数体。

原文地址:https://www.cnblogs.com/wobu/p/8902519.html

时间: 2024-10-09 04:29:50

C++类与对象(2)——类的组合的相关文章

类的对象和类的指针

类的对象和类的指针的区别zz 如下程序: #include <iostream> #include <string> using namespace std; class Student {     public:     static int number;     string name; public:     Student() { } void set(string str)     {        name = str;         number++; // 调用

python 2018.7.24 类空间,对象空间,查询顺序 ,组合

查询顺序: 对象.属性 : 先从对象空间找,如果找不到,再从类空间找,再找不到,再从父类找.... 类名.属性 : 先从本类空间找,如果找不到,再从父类找.... 对象与对象之间是互相独立的. 计算一个类 实例化多少对象.例 class Count: count = 0 def __init__(self): Count.count = self.count + 1 obj1 = Count() obj2 = Count() print(Count.count) count = 0 class

P4 类、对象、类成员简介

本节内容 类(class)是显示世界事物的模型. 现实中的一架飞机========================>>>抽象为程序世界中的类 类与对象的关系 对象也叫做实例,是类经过实例化得到的内存中的事宜 有些类不能被实例化,如数学,我们不能说一个数学 依照类,我们可以创建对象>>>这就是实例化 现实世界中常称对象,程序世界中常称实例,二者并无太大区别,常常混用,不用太纠结. 使用new操作符创建对象 △14:15开始编写程序>>>接下来我们自己动手

C#002类,对象,类成员简介

本节内容 1.类(class)是现实世界事物的模型 2.类与对象的关系,什么时候叫“对象”什么时候叫“实例” 3.引用变量与实例的关系 4.类的三大成员: ①属性(Property): ②方法(Method): ③事件(Event) 5.类的静态成员与实例成员 ①关于“绑定”(Binding) 1.类(class)是现实世界事物的模型 类是对现实世界事物进行抽象所得到的结果类包括“物质”(实体)与“运动”(逻辑)建模是一个去伪存真.由表及里的过程 2.类与对象的关系 ①对象也叫实例,是类经过“实

Lesson 04:类和对象,类的成员变量、成员方法、构造方法

1 类(class) java是面向对象程序设计(OPP),类是构造对象的模板或者蓝图.由类构造(construst)对象的过程称为创建类的实例(instance).类的构成: 1 package 包名 2 class 类名 extends 父类名 implements 接口名{ 3 成员变量: 4 构造方法: 5 成员方法: 6 } 7 //一个简化的类的结构 成员变量 成员方法:包含返回值类型.参数列表.方法主体等要素 (1)方法的声明: 1 //方法的声明没有函数体 2 public in

python的类和对象(类的静态字段)

转自:http://www.cnblogs.com/Eva-J/p/5044411.html 什么是静态字段 在开始之前,先上图,解释一下什么是类的静态字段(我有的时候会叫它类的静态变量,总之说的都是它.后面大多数情况可能会简称为类变量.): 我们看上面的例子,这里的money就是静态字段,首先看它的位置,是在father类中,而不是在__init__中.那么一个小小的静态字段,我为什么要特意写一篇番外给它呢?耐着性子看下去,你就会发现一个小小的类变量,却折射出了整个类的世界. 首先我们先来解释

Python 之面向对象:类和对象调用类中的变量和方法

面向对象的核心是对象,用对象来操控类里面的方法和变量,加上类还具有继承.封装.多态三大特性,提高了代码的复用性和规范性. 一.对象 调用类中的变量和方法 二 .类  调用类中的变量和方法 原文地址:https://www.cnblogs.com/tianpin/p/11283032.html

第1章 类和对象——定义类和创建对象

1.1     定义类.创建对象 在编程时,要定义类,然后在创建这个类的对象(实例). 1.1.1 定义类 定义类的语法个式如下: 访问修饰符 Class 类名 {     类的成员1:     ................     类的成员n:       } 各项的含义如下. 1)  “访问修饰符”用来限制类的作用范围或访问级别,类的修饰符只有public和internal两种(嵌套类除外).其中,声明为public的类可以被任何其他类访问:声明为internal的类智只能从同一个程序集

类和对象:类与对象定义

在自己学习PHP的过程中,从零基础开始:从第一本书的看不懂,到第二本书的有印象了,再到第三本书的操作简单语句……记不清到底看过多少本了.可 是在应用时,每次到了一些关键知识点和核心技术,对其定义和用法会有模糊的感觉,因此特意把觉得比较重要的知识点写成网络笔记,这样便于经常翻来温习. 面向过程定义: “面向过程”是一种以事件为中心的编程思想,就是分析出解决问题所需要的步骤,然后用函数把这些步骤逐步实现,使用时将逐一调用就可以了. 面向过程编程方式重点围绕在数据的使用上,在程序设计过程中通过流程图的

php函数、类和对象以及类的封装、继承、类的静态方法、静态属性

1.函数     php内置函数可以直接使用,如果没有安装php扩展即可     自定义函数 //函数function 函数名 function dump($var = null){ //支出默认参数值 echo '<pre/>'; var_dump($var); } 2.类(class)和对象( new Obj) <?php //定义一个人的类,现在还不是对象 class Person { //私有属性 private $eye = '大眼睛'; private $mouth = '小