首页 > 编程语言 >C++第四章类与对象

C++第四章类与对象

时间:2023-02-03 14:32:44浏览次数:51  
标签:函数 Clock 对象 void C++ int 成员 第四章

一、面向对象的基本特点

1.  抽象

  • 对同一类对象的共同属性和行为进行概括,形成类。
  • 先注意问题的本质及描述,其次是实现过程或细节。
  • 数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)。
  • 代码抽象:描述某类对象的共有的行为特征或具有的功能。
  • 抽象的实现:类。
  • 抽象实例——钟表

数据抽象:

int hour,int minute,int second

代码抽象:

setTime(),showTime()

 

class Clock {

 public:

  void setTime(int newH, int newM, int newS);

  void showTime();

 private:

  int hour, minute, second;

};

  1. 对象是现实中对象在程序中的模拟
  2. 类是同一类对象的抽象,对象是类的某一特定实体
  3. 定义类的对象,才可以通过对象使用类中定义的功能

2.封装

  • 将抽象出的数据、代码封装在一起,形成类。
  • 目的:增强安全性和简化编程,使用者不必了解具体的实现细节,而只需要通过外部接口,以特定的访问权限,来使用类的成员。
  • 实现封装:类声明中的{}
  •  例:

class Clock {

 public: void setTime(int newH, int newM, int newS);

           void showTime();

 private: int hour, minute, second;

};

 


3.继承

在已有类的基础上,进行扩展形成新的类。

详见第7章

4.多态

  • 多态:同一名称,不同的功能实现方式。
  • 目的:达到行为标识统一,减少程序中标识符的个数。
  • 实现:重载函数和虚函数——见第8章

二、类和对象

1.类定义的语法形式和访问控制

class //类名称

{

pubilc:

                    //公有成员(外部接口),任何函数都可访问

private:

                  //私有成员,只允许本类中的函数访问

protected:

                 //保护型成员,详见第七章

}

2.对象定义的语法

 类名 对象名;

 例:Clock myClock;

3.类成员的访问权限

 1.类中成员互相访问

 直接使用成员名访问

 2.类外访问

 使用“对象名.成员名”方式访问 public 属性的成员

 3.例4_1-1:钟表类

 //类的定义

#include<iostream>

using namespace std;

class Clock {//对象名为Clock

public:

  void setTime(int newH=0, int newM=0, int newS=0);//外部接口,公有成员函数,有默认参数值

  void showTime();//成员名有两个,setTime和showTime

private://私有数据成员

  int hour,minute, second;

};

//Clock类成员函数的实现

void Clock::setTime(int newH,int newM,int newS){//注意类中的函数,要写::(类的作用域限定符)

hour=newH;

minute:newM;

second=newsS;

}

void Clock::showTime(){

cout<<hour<<":"<<minute<<":"<<second<<endl;

}

//对象的使用

int main(){

Clock myClock;//定义对象,myClock

myClock.setTime(8,30,30);//调用setime函数,值为8,30,30

myClock.showTime();//调用showtime,显示时间

return 0;

}

运行结果为

8:30:30

4.类内初始值

  • 可以为数据成员提供一个类内初始值
  • 在创建对象时,类内初始值用于初始化数据成员
  • 没有初始值的成员将被默认初始化。
  • 类内初始值举例

class Clock {

public:

  void setTime(int newH, int newM, int newS);

  void showTime();

private:

  int hour = 0, minute = 0, second = 0;//0即类内初始值

};

5.类的成员函数语法

  • 在类中说明函数原型;
  • 可以在类外给出函数体实现,并在函数名前使用类名加以限定;
  • 也可以直接在类中给出函数体,形成内联成员函数;
  • 允许声明重载函数和带默认参数值的函数。
  • 在类中声明内联成员函数的方式:

1.将函数体放在类的声明中。

or2.使用inline关键字。

标签:函数,Clock,对象,void,C++,int,成员,第四章
From: https://blog.51cto.com/u_15740457/6035830

相关文章

  • 【八大数据排序法】希尔排序法的图形理解和案例实现 | C++
    第十七章希尔排序法:::hljs-center目录第十七章希尔排序法●前言●认识排序●一、希尔排序法是什么?1.简要介绍2.图形理解3.算法分析●二、案例实现1.......
  • 37面向对象-基本语法
    packagechapter04;publicclassJava01_Object{publicstaticvoidmain(String[]args){//TODO面向对象//面向对象指分析问题时,以问题所涉及......
  • c++中调用QML中的函数和设置QML中的属性的问题
    1.这里主要是介绍,如何在c++中调用QML中的函数和设置QML中的属性的问题  2.具体代码    //UICtest.qmlimportQt4.7Rectangle{   id:mainWid......
  • JS根据一个数组过滤另一个数组对象
    constarr1=[{id:1,name:'aaa'},{id:2,name:'bbb'},{id:3,name:'ccc'},{id:4,name:'ddd'}]constarr2=[{uid:2,uname:'eee......
  • C/C++编译链接
    一、编译链接过程名词解释编译:由编译器对各个源文件进行词法分析、语法分析、语义分析等操作,最终生成多个目标文件。由于这些文件可能存在互相调用对方的函数或变量,还......
  • 现代C++实战30讲
    本文记录学习吴咏炜老师的《现代C++实战》课程的心得体会,记录自认为值得记录的知识点。重新认识的点如果临时对象被绑定到一个引用上,则它的生命周期会延长到跟这个引用......
  • 现代C++实战30讲(2)
    本文记录学习吴咏炜老师的《现代C++实战》课程的心得体会,记录自认为值得记录的知识点。重新认识的点编译期间的多态所有容器类都有begin和end函数成员,这为通用遍......
  • 《程序是怎样跑起来的》·第四章 熟练使用有棱有角的内存
    重点:计算机是进行数据处理的设备,而程序表示的就是处理顺序和数据结构。由于处理对象数据是存储在内存和磁盘上的,因此程序必须能自由地使用内存和磁盘。因此,大家有必要对内......
  • c++学习2 基础关键词
    三volatile强制访问内存在一个变量的频繁使用中,系统为了提高效率,会自动将内存里面的数据放入CPU里的寄存器里。但在某些特殊场景下,放入寄存器这个操作反倒会导致CPU无法......
  • Python 高级编程之面向对象(一)
    目录一、概述二、面向对象的概念介绍1)类定义2)类属性3)类方法4)构造方法(init)三、面向对象封装、继承和多态1)封装2)继承3)子类重新方法和super()调用父类方法4)多态一、概述科班......