前言:时间过的好快,转眼一学期就过去了,期末考试也快到了,所以就复习一遍同时也将自己学习的感悟总结下来。前面几章大多与C语言相似,就不总结了。

第三章——函数
参数传递

#include <iostream>using namespace std;void swap(int a,int b) {int t=a;b=t;a=b;
}int main()
{int x=5,y=10;cout<<"x= "<<x<<" y= "<<y<<endl;swap(x,y);cout<<"x= "<<x<<" y= "<<y<<endl;return 0;
}
//输出结果
x= 5 y= 10
x= 5 y= 10

通过这个例子,可以看出形参值的改变对实参是无影响的,如果是引用传递的话就另当别论了,看下面这个例子。

可以看出,如果使用引用参数的话是可以改变实参的值,但要注意:

  • 声明一个引用时,必须同时对它进行初始化,使它指向一个已经存在的对象
  • 一旦一个引用被初始化后,就不能改为指向其他对象

内敛函数

对于内敛函数,我的理解是就相当于一个类中公有类型的成员函数,只不过是放在了类外面,需要在函数返回值类型前加上inline,而且内敛函数大多都是调用频率很高,而且代码是相对简单的。

带默认形参值的函数

通过这个代码就会理解带默认形参值的函数,但也有几点要注意:

  • 有默认值的形参必须在形参列表的最后,因为实参与形参是按照从左到右的顺序建立关系的。
  • 在相同的作用域中,不允许在同一个函数的多个声明中对一个参数的默认值重复定义。

函数重载

说白了,就是同一个函数名,但又不同的功能,这就叫函数重载,也需注意:

  • 函数重载不以形参名来区分函数
  • 函数重载不以返回值来区分函数

第四章——类与对象

类的定义:
class 类名称
{
public:
外部接口
private:
私有成员
};
对象声明:
类名 对象名;
对象访问数据成员:
对象名.数据成员名
对象调用函数成员:
对象名.函数成员名(参数表)
成员函数的实现:
返回值类型 类名::函数成员名(参数表)
{
函数体
}

例如:

 void Clock::setTime(int newH,int newM,int newS) {hour=newH;minute=newM;second=newS;}void Clock::showTime() {cout<<huor<<":"<<minute<<":"<<seconde<<endl;}

到这才算刚接触到C++,这些便是C++访问成员函数或对象的一些方法。

构造函数

通过这个代码,感觉构造函数有一般成员函数的特征,但构造函数有一些特殊的特征:构造函数的函数名与类名相同,而且没有返回值

复制构造函数

复制构造函数的一般方法
class 类名
{
public:
类名(形参名);//构造函数
类名(类名 &对象名);//复制构造函数

};
类名::类名(类名 &对象名);//复制构造函数的实现
{
函数体
}

#include <iostream>using namespace std;class point {public:point(int xx=0,int yy=0) {x=xx;y=yy;}point(point &p);int getX() {return x;}int getY() {return y;}
private:int x,y;
};
//成员函数实现
point::point(point &p) {x=p.x;y=p.y;cout<<"copy"<<endl;
}
//形参为point类对象的函数
void fun1(point p) {cout<<p.getX()<<endl;
}//返回值为point类对象的函数
point fun2(){point a(1,2);return a;
}int main()
{point a(4,5);point b=a;//情况一,用a初始化b.第一次调用复制构造函数cout<<b.getX()<<endl;fun1(b);//情况二,对象b作为fun1的实参。第二次调用复制构造函数b=fun2();//情况三,函数返回值是类对象,函数返回时,调用复制构造函数cout<<b.getX()<<endl;return 0;
}


通过这个代码来了解一下复制构造函数,复制构造函数拥有一般构造函数的所有特性,而它所不同的是形参是本类的对象的引用作用是使用一个已经存在的对象(由复制构造函数的参数指定),去初始化同类的一个新对象。这个概念理解起来最好是通过代码,这样便于理解。

复制函数有三种情况可以被调用:

  • 当用类的一个对象去初始化该类的另一个对象时。
  • 如果函数的形参是类的对象,调用函数时,进行形参和实参的结合时。
  • 如果函数的返回值是类的对象,函数执行完成返回调用者时。

析构函数
构造对象时,构造函数中分配了资源,动态申请了一些内存单元,在对象消失时需要释放这些内存单元。而析构函数就用来完成对象被删除前的一些清理工作析构函数是在对象的生产期即将结束的时刻被自动调用的。而且析构函数不接收任何参数

C++学习总结(函数、类与对象)相关推荐

  1. Python学习笔记 (类与对象)

    Python学习笔记 (类与对象) 1.类与对象 面向对象编程语言类: 一个模板, (人类)-是一个抽象的, 没有实体的对象: (eg: 张三, 李四) 属性: (表示这类东西的特征, 眼睛, 嘴巴, ...

  2. java创建一个人函数类_Java对象和类–学习如何创建和实现

    对象和类被认为是任何基于OOPs的语言的精华.由于Java是最常用的面向对象编程语言之一,因此非常有必要牢记这些概念.因此,我为您带来这篇文章,在这里我将给您一个完整的Java对 对象和类被认为是任何 ...

  3. python学习之【类和对象】

    前言 五一快乐! 上一篇文章python学习--[第八弹]中,给大家介绍了python中的函数,这篇文章接着学习python中的类和对象. 我们知道,python中一切皆对象.在这篇文章开始之前,我们 ...

  4. 一个编程小白的Java SE学习日志 V——类、对象【极客BOY-米奇】

    文章目录 前言(转载请说明作者!)3.18~3.25编写 观看前自问 面向对象实现过程 面向对象三大特性 封装 继承 多态 如何理解类与对象(实例)的关系? 现实理解 如何理解对象? 现实理解 任务导 ...

  5. 冰冰学习笔记:类与对象(上)

    欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正. 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位大佬.帅哥.美女点点支 ...

  6. 冰冰学习笔记:类与对象(下)

    欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正. 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位大佬.帅哥.美女点点支 ...

  7. Java学习笔记_类和对象

    ·类:是一组相关属性和行为的集合,可以看成是一类事务的模板,使用事物的属性特征和行为特征来描述该类事物. ·属性:该事物的状态信息 ·行为:就是该事物能够做什么 ·对象:一类事物的具体体现,对象是类的 ...

  8. python学习day2:类与对象

    类与对象 一.内置函数 1.int方法 (1)def__add__(self, y):       #两数相加 """ x.__add__(y) <==> x ...

  9. unity让对象作为参数_C#+Unity学习笔记:类与对象

    参考文献 蜜酒厅通讯社 游戏部 石中居士 对象(object):有状态.行为和身份的东西. 状态(state):表示物体特征的信息,可以用来跟踪对象的状态. 属性(properties):因为编程人员 ...

  10. (四)nodejs循序渐进-函数,类和对象(基础篇)

    上一篇文章讲到了基本数据类型和运算符,相信大家都能做简单的运算,本篇文章将讲述函数,类,对象. 函数 在nodejs中,一个函数可以作为另一个函数的参数.我们可以先定义一个函数,然后传递,也可以在传递 ...

最新文章

  1. java中ContentArea_java中TextArea怎么加载指定路径的文本内容
  2. 在SQL和ERWIN中用自定义类型、规则和默认值实现check约束从而保证数据的完整性...
  3. matlab R2014a添加路径
  4. LeetCode 1171. 从链表中删去总和值为零的连续节点(哈希表)
  5. 【系统设计】发现类的方法
  6. 如何攻克 Android 调试难题?| 技术头条
  7. 明知道计算机是吃青春饭,为什么还有那么多人前仆后继
  8. oracle ora00020,ORA-00020: maximum number of processes (1000) 错误处理
  9. [转]新建一个Android工程项目
  10. 成都11区+4县+5市高分辨率边界kml
  11. 基于ATtiny85制作MIDI数字音乐盒
  12. 【数学建模】2021 年全国大学生数学建模竞赛A题一等奖获奖论文
  13. [转] 怎样写好作文批语
  14. 腾讯企业邮箱解析到阿里云域名
  15. 怎样远程控制另一台电脑
  16. 关于1NF、2NF、3NF、BCNF的常考判定
  17. 5g理论速度_如何理解5G下载速度?
  18. 设置网页宽高的比例为16:9
  19. Ubuntu安装repo
  20. 2022年线上求职!我建了一个AI算法岗求职群

热门文章

  1. ERROR Shell: Failed to locate the winutils binary in the hadoop binary path java.io.IOException
  2. 十七、爬虫实战,多线程抓取大搜网新车的数据
  3. sklearn(聚类和降维)
  4. 光速OFFER,为AI奔赴,商汤2022届校招提前批正式启动!
  5. 学习历史预测未来,国防科大新模型实现未来事实预测SOTA
  6. ACM MM 2018论文概述:基于多粒度监督的图像语义物体协同标注
  7. Android 开发 技术大纲 某学课堂
  8. python的前端框架_web前端三大主流框架之Python异步框架如何工作?
  9. 【SpringBoot】SpringBoot整合SpringDataJPA及基本使用
  10. 解析性语言与编译性语言优劣对比