类的定义与对象的创建.

类的定义与对象的创建

1.实验目的

        (1)理解并学会使用类,并创造合适的对象

(2)掌握在什么场景下需要使用 类

2.实验内容

类的定义、类成员的访问控制、对象、类的成员函数

3.实验过程

3.1类和对象

Part1.应用场景

类是面向对象程序设计方法的核心,利用类可以实现对数据的封装和隐蔽。

在面向对象程序设计中,程序模块是由类构成的。类是对逻辑上相关的函数与数据的封装,它是对问题的抽象描述。

Part2.定义及代码

3.1.1类的定义

class 类名称
{
public:
   外部接口
protected:
    保护型成员
private:
    私有成员
};

其中,public、protected、private分别表示对成员的不同访问控制权限。

注意:在类中可以只声明函数的原型,函数的实现(即函数体)可以在类外定义。

例:

时钟类

class Clock{

public :
       void setTime(int newH,int newM,int newS);
       void showTime();
private:
        int hour,minute,second;
};    

这里封装了时钟的数据和行为,分别称为Clock类的数据成员和函数成员。

3.1.2类成员的访问控制

类的成员包括:数据成员、函数成员。分别描述问题的属性和行为,是不可分割的两个方面。

访问控制属性(3种):公有类型 public,私有类型 private,保护类型 protected。

特点:①公有类型:公有类型成员定义了类的外部接口在类外只能访问类的公有成员;

②私有类型:后面声明的是私有成员,如果私有成员紧接着类的名称,则关键字private可以省略。 

         私有成员只能被本类的成员函数访问,来自类外部的任何访问都是非法的。保护了数据的安全性。

        (一个类的数据成员都应该声明为私有成员,使模块之间的相互作用被降低到最小)

   ③保护类型:保护类型成员和私有成员的性质相似,其差别在于继承过程中对产生的新类影响不同。

注意:具有不同访问属性的成员可以按任意顺序出现,修饰访问属性的关键字也可以多次出现,但是一个成员只能有一种访问属性。

3.1.3对象

类的对象就是该类的某一特定实体(也称实例)。

声明方式:

类名  对象名;

例如:

Clock myClock;

访问数据成员的一般形式:

对象名.数据成员名;//用“.”

调用函数成员的一般形式:

对象名.函数成员名(参数表);//使用“.”

例:

myClock.showTime();

注意:在类的外部只能访问到类的公有成员;在类的成员函数中,可以访问到类的全部成员。

3.1.4类的成员函数

类的成员函数描述的是类的行为,例如时钟类的成员函数setTime()和showTime()。成员函数是程序算法的实现部分,是对封装的数据进行操作的方法。

①成员函数的实现

函数原型的声明要写在类体中,原型说明了函数的参数表和返回值类型。而函数的具体实现是写在类定义之外的。

与普通函数不同,实现成员函数时要指明类的名称。

具体形式:

返回值类型 类名::函数成员名(参数表){
     函数体
}

例如:

void Clock::setTime(int newH,int newM,int newS){
     hour=newH;
     minute=newM;
     second=newS;
}

void Clock::showTime(){
     cout<<hour<<":"<<minute<<":"<<second<<endl;
}

可以看出与普通函数不同,类的成员函数名需要用类名来限制,例如 Clock::showTime()。

②成员函数调用中的目的对象

调用一个成员函数和一个普通函数的差异在于,需要使用“.”的操作符指出调用所针对的对象,这一对象在本次调用中称为目的对象。

在成员函数中可以不使用“.”的操作符而直接引用目的对象的数据成员。

在成员函数中引用其他对象的属性和调用其他对象的方法时,都需要使用“.”。

③带默认形参值的成员函数

类的成员函数可以有默认参数值,其调用规则与普通函数相同。

类成员函数的默认值,一定要写在类定义中,而不能写在类定义之外的函数实现中。

例:

class Clock{
public:
    void  setTime(int newH=0,int newM=0,int newS=0);
    ......
};

如果调用这个函数时没有实参,就会按照默认值将时钟设置到默认零点。

3.1.5内联成员函数

如果有的成员函数需要被频繁调用,而且代码比较简单,这个函数也可以定义为内联函数。

声明方式:

      隐式声明和显式声明

隐式声明:将函数体直接放在类体内

class Clock{
public:
     void setTime(int newH,int newM;int newS);
     void showTime(){
          cout<<hour<<":"<<minute<<":"<<second<<endl;
}
private:
     int hour,minute,second;
};

显式声明:采用关键字inline

inline void Clock::showTime(){
   cout<<hour<<":"<<minute<<":"<<second<<endl;
}

效果和前面的隐式表达完全相同。

3.1.6程序实例

#include<iostream>
using namespace std;
class Clock {
public:
    void setTime(int newH = 0, int newM = 0, int newS = 0);
    void showTime();
private:
    int hour, minute, second;
};
void Clock::setTime(int newH, int newM, int newS) {
    hour = newH;
    minute = newM;
    second = newS;
}
inline void Clock::showTime() {
    cout << hour << ":" << minute << ":" << second << endl;
}
int main()
{
    Clock myClock;
    cout << "First time set and output:" << endl;
    myClock.setTime();
    myClock.showTime();
    cout << "Secong time set and output:" << endl;
    myClock.setTime(8, 30, 30);
    myClock.showTime();
    return 0;
}

分析:

  本程序可分为三个独立的部分,第一部分是类的Clock定义,第二部分是时钟类成员函数的具体实现,第三部分是主函数main()。

  这里的成员函数setTime是带有默认参数值的函数,有三个默认参数。showTime是显式声明的内联成员函数。

  主函数中声明了一个类的对象myClock,然后用这个对象调用其成员函数。

原文地址:https://www.cnblogs.com/nanaa/p/11733856.html

时间: 2024-10-04 17:17:44

类的定义与对象的创建.的相关文章

类的定义和对象的创建

类的定义和对象的创建 在Java中,一切都是对象.写Java程序就是定义类的过程.类是一个模板,它规定了一种数据结构的原型. 类中包含两部分:变量和方法. 类中定义的变量称为数据成员或成员变量. 类中定义的方法称为成员方法或成员函数. 定义了类之后,还不能对他进行任何操作,必须让这个模板具体化才可以.让模板具体化的过程就是实例的创建过程.根据类这个模板,可以创建一个个具体的实例,这些实例称为对象.实例化过程包括为其分配必要的内存空间.设置相应的初始值等.每个对象中,针对类定义的数据成员都允许有自

关于PHP面向对象中—类的定义与对象的实例化操作以及构造、析构函数的特殊用法

类的定义与对象的实例化操作 <?php //类里面的成员是属于对象的class Hero{    public $name;//成员变量    //成员属性(存在于强类型语言中)    protected $blood;    private $attack;    //成员方法    function skill(){        echo "$this->name<br>control";            }} $s = new Hero();//造

java问题:类的定义,对象的定义?

java问题:类的定义,对象的定义? 类是一组数据和函数的集合,只是抽象的概念,它的作用就是生成对象,它生成对象后,就为这个对象分了一块存储区,类可以生成无限多个对象,每个对象都有自己的存储区,在类里定义的数据和函数在这个对象里都有了.在Java当中,对象是一个类的实体.

java类的初始化和对象的创建顺序

学习java编程思想--类的初始化p146 类的加载顺序* 1加载器启动找到 xxx.class文件,通过extends关键字寻找基类,先加载基类* 2类初始化先初始化static成员变量和static--->* 2先初始化父类的static成员变量和static* 3再初始化本类的static成员变量和static * 类加载之后,对象创建开始* 1先加载父类的非静态成员变量(静态成员变量在类初始化的时候已经加载,非静态成员变量要随对象的创建而初始化)* 2先加载父类的构造函数* 3再加载本类

C++类的定义,成员函数的定义,对象的创建与使用

---恢复内容开始--- 类是一个模板,可用类生成一系列可用的实例.例如 int B就是生成了一个符合int的数据B,类也是一样,使用类名就可以直接生成一个实例, 该实例中包含类中所有的数据类型和对这些数据的操作方法. 首先,创建一个类 class OBJ { private: char Name[MAX]; int Num; float Price; float Total_price; protected: public: } 该类中包含三个部分,私有部分(private).保护部分(pro

Greenplum中定义数据库对象之创建与管理模式

创建与管理模式 概述:DB内组织对象的一种逻辑结构.一个DB内能够有多个模式.在未指定模式时默认放置在public中.能够通过"\dn"方式查看数据库中现有模式. testdw=# \dn List of schemas Name        |  Owner --------------------+--------- gp_toolkit         | gpadmin information_schema | gpadmin pg_aoseg           | gpa

OC面向对象编程-类的声明和对象的创建

一 OC类的声明和实现 1.接口的声明 @interface NewClassName: ParentClassName { 实例变量 ... } 方法的声明 ... @end 2.类的实现 @implementation NewClassName { 方法的实现 //code ... } @end

OC_语法入门_day1_类的定义

H:/Objective-C/OC_day0/00-OC经典入门.m /*================第一段代码(start)========================== = #import <Foundation/Foundation.h> // 1,类的声明 @interface Car : NSObject { // 所有成员变量,默认初始值均为0 @public int wheels; int speed; } // 对象的方法 // 1,前面固定写减号- // 2,不同于

类的定义中可以包含其自身的指针或引用类型,但不可包含自身类型

一个类可以只有声明没有定义,如: class Simple ; //没有{}部分被视为声明. 注意: class Simple { } ; 这个是定义,只不过类是空的而已.只要包含{}就算定义. 对于只有声明而没有定义的类,只能声明它的指针类型或引用类型,不能直接声明其对象类型. class Simple ; void main(void) { Simple simple ; // error, 'simple' uses undefined class 'Simple' Simple *sim