C++面向对象快速入门

本文介绍了C++的面向对象特性,包括new与delete操作符、const常量、引用、值传递方式、函数重载、类的定义、构造函数与析构函数、静态成员、虚函数与多态、抽象类以及函数模板和类模板。详细讲解了这些概念及其在实际编程中的应用。
摘要由CSDN通过智能技术生成

 

目录

new与 delete

const常量

引用

值的传递方式

值传递,不影响原先的值

函数重载

类的定义形式说明

构造函数

析构函数定义

构造函数成员列表

 构造函数的重载

类的静态成员

静态数据成员

复制构造函数

this指针

 动态创建指针

用数组定义对象//对象数组(静态)

类的继承

使用继承(UML类图)

继承与派生

构造函数在派生类的使用顺序

派生类构造函数

在派生类方法中调用基类的方法

派生类的析构函数

虚函数与多态

√类型转换规则

√虚函数定义

√多态性(静态绑定)

动态绑定

虚析构函数

抽象类

纯虚函数与抽象类

对象数组图 

函数模板与类模板

函数模板

类模板

类的友元


  • 命名空间 :防止程序中的重名问题

口命名空间
用于防止程序中的同名问题,最常见的是使用std命名空间。
例:必需使用以下语法,才能正确使用cin,cout输入输出语句:

using namespace std;


new与 delete


new、 delete用于堆空间的分配与回收。
new:用于从堆中分配指定大小的内存区域,并返回获得内存
区域的首地址。相较于 malloch可以自动计算大小、无需指针转换
用法示例:

int*ar= new int [100]


delete:用于释放new分配的堆内存。
用法示例:

delete[]ar;

const常量


常量在声明时一定要赋初值,而在程序中间不能改变其值
格式:
const i 类型变量名=初值
例如

面向对象的编程思维 通常将常量声明const常量便于迁移

const int LENGTH =10

引用


引用是某个对象(即变量)的别名,定义形式如下:
类型&引用名=变量名;
例如:

int a=10
int &b= a:


引用很少单独使用,常常作为形参的方式来使用:
例如:

void swap(int&a,int&b)

[注意]
y在变量声明时出现&才是引用运算符,其它地方的&都是取地址运算符;
v引用代表一个变量的别名,必须在定义时初始化,不能在定义完成后再赋值;
一个引用名只能作为一个变量的别名;

值的传递方式

值传递,不影响原先的值

地址传递,引用传递会影响原先的值

直接为传入的变量换名,但是指向的是同一段空间

公用存储方式;

引用是c++特有的传值方式

函数重载

重载就是:一个函数可以有多种写法,一般是函数名相同,参数不同

注意:
重载函数的形参必须不同:个数不同或类型不同
编译程序将根据实参和形参的类型及个数的最佳匹配来选择调
用哪一个函数。
int add(int x, int y)
int add(int a, int b)                  这是不正确的
编译器不以形参名来区分  而是通过参数的类型,数量进行一个区分

不要将不同功能的函数声明为重载函数,以免出现调用结果的误解、混淆。
√以下定义方式不好,编程时需要避免:

不可以是两个参数同时可调用

/函数在声明时可以预先给出默认的形参值,

调用时如给出实参,则采用实参值,否则采用预先给出的默认参数值

 如果一个函数有原型声明,且原型声明在定义之前,

默认参数值必须在函数原型声明中给出
y而如果只有函数的定义,或函数定义在前,则默认参数值需在函数定义中给出。

 一个类必须有属性和数据

类的定义形式说明


public-与 private是访问权限修饰符。被 public修饰的属性
和函数可以在类内部与类外部被访问;被 private修饰的
属性和函数只能在类内部被访问;
v成员函数可以访问本类中任何成员。一般的做法是将需
要被外界调用的成员函数指定为 public,它们是类的对外
接口
y有的函数并不是准备为外界调用的,而是为本类中的成
员函数所调用的,就应该将它们指定为 private

属性一般定义成 private,
行为一般定义成 public
这样就实现了封装

构造函数

构造函数( constructor)是一种特殊的成员函数,它
为对象初始化提供了功能更强,使用更方便的途径。

构造函数特点
1.构造函数的名字必须与类的名字相同
定义构造函数时不能指定返回类型;
3.构造函数的代码与其它函数一样,但一般不直接调用(显式调用)
4.创建类的一个新对象时,会隐式地自动调用构造函
。也就是说,当程序中声明一个新对象时,程序会
自动调用该对象所属类中定义的构造函数来初始化这
个对象的状态
5.若在定义类时没有定义构造函数,C++会自动为该类
创建一个缺省( default)的构造函数。这个缺省构造
函数没有任何形式参数,且函数体为空。//定义过就不会自动生成  自己手动自定义的无参狗咱函数

析构函数定义


y析构函数( destructor)也是一种特殊的成员函数,
它在对象撤消时执行一些清理任务。
y例如在建立对象时用new开辟了一片内存空间,
delete会自动调用析构函数后释放内存

析构函数特点
1.析构函数的名字必须是在类名前加上一个波纹号
“~”,以区别于构造函数;
v2.定义析构函数时也不能指定返回类型
v3.在对象消亡时,隐式地自动调用析构函数。也就是
说,当程序中一个对象作用结東时,程序会自动调用
该对象所属类中定义的析构函数来清除这个对象所占
的存储空间;
v4.若在定义类时没有定义析构函数,C++会自动为该
类创建一个缺省的析构函数。这个缺省析构函数没有
任何形式参数,且函数体为空。

return表示程序结束返回操作系统

构造函数成员列表

ios(int a,int b):A(a),B(b){
}

 

 构造函数的重载

对象的构造函数是相对独立的

 默认构造函数
调用时可以不需要参数的构造函
构造函数。
v当不定义构造函数时,编译器自动产

y在类中可以自定义无参数的构造函数
造函数
y全部参数都有默认形参值的构造函数
函数

一个系统可以有多个构造函数 但是只能有一个默认的构造函数

类的封装(重要)

封装的含义是:
所有属性都是私有的,外部不能直接访问;
提供与属性相关的get/set函数,间接访问属性。
为了完成封装的思想,
程序。
・增加了以下函数:
gethour, getminute, getsecond
sethour, setminute, setsecond

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值