博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++学习笔记_2
阅读量:5145 次
发布时间:2019-06-13

本文共 1647 字,大约阅读时间需要 5 分钟。

前言:本笔记所对应的课程为中国大学mooc中北京大学的,主要供自己复习使用,且本笔记建立在会使用c和java的基础上,只针对与c和java的不同来写

第二章 类和对象基础

类和对象的基本概念补充

  1. 某成员缺省关键字时,默认为private
  2. 访问范围:在类的成员函数内部,能访问当前对象和其他同类对象的全部属性和函数;在类的成员函数外部,只能访问对象的public成员。
  3. 同时使用缺省参数和重载时要注意避免二义性。

构造函数

如何创建一个对象:

class Complex {    private:        int v;    public:        Complex() { v = 0;} //(1)        Complex(int n) { v = n;} //(2)        Complex(int n, int m) { v = n - m;} //(3)};Complex c1;Complex * pc1 = new Complex;Complex c2(2), c3(3);Complex * pc2 = new Complex(2);Complex array1[3]; //产生3个(1)初始化的对象Complex array2[3] = {3, 0}; //产生两个(2)初始化的对象,产生一个(1)初始化的对象Complex * array3 = new Complex[3]; //产生三个(1)初始化的对象Complex array4[3] = {4, Complex(1, 2)}; //产生三个对象,分别用(2)(3)(1)初始化Complex * array5 = {new Complex(4), NULL, new Complex(5, 6)}; //产生两个对象,分别用(2)(3)初始化

复制构造函数

用于将一个对象复制。形如X::X(X &)或者X::X(const X &),通常使用后者。如果没有明确定义,则会生成默认的一个复制构造函数用于复制对象。

参数必须是引用

复制构造函数起作用的三种情况:

  1. 用一个对象去初始化同类的另一个对象时。(即直接调用复制构造函数)
  2. 当一个函数的参数是某个类的对象时,那么调用这个函数,该类的复制构造函数会被调用。
  3. 当一个函数的返回值是某个类的对象时,那么调用这个函数,该类的复制构造函数会被调用。

对于第二种情况,由于复制对象会造成较大的系统开销,因此当想要避免这种情况的时候,可以将参数改为引用的形式;如果还不希望该对象被修改,那么还可以加上const关键字。

类型转换构造函数

用于实现类型的自动转换。只有一个参数且不是复制构造函数的构造函数都称为类型转换构造函数。

类型转换构造函数有一种特殊的用法,如下所示:

class Complex {    private:        int v;    public:        Complex() { v = 0;}        Complex(int n) { v = n;}        Complex(int n, int m) { v = n - m;}};Complex c1;Complex c2 = 9;Complex c3(6, 3);Complex c4 = 4;

析构函数

  1. 析构函数在对象消亡时被自动调用,可用来做释放空间等工作。
  2. 一个类只能有一个析构函数。写法:在无参数的构造函数前加一个~就是析构函数。
  3. 没有显式定义析构函数的时候,生成缺省析构函数,缺省析构函数什么都不做。
  4. 对象作为函数参数或函数返回值时析构函数都很可能会被调用。
  5. main函数结束的时候会自动回收对象,因此会调用析构函数。
  6. new出的对象如果没有用delete删除,在main函数结束的时候不会被自动回收,因此不会调用析构函数。

转载于:https://www.cnblogs.com/fyunaru/p/11302024.html

你可能感兴趣的文章
Exception Type: IntegrityError 数据完整性错误
查看>>
Nuget:Newtonsoft.Json
查看>>
Hdu - 1002 - A + B Problem II
查看>>
每天CookBook之Python-003
查看>>
每天CookBook之Python-004
查看>>
Android设置Gmail邮箱
查看>>
js编写时间选择框
查看>>
Java数据结构和算法(四)--链表
查看>>
JIRA
查看>>
小技巧——直接在目录中输入cmd然后就打开cmd命令窗口
查看>>
深浅拷贝(十四)
查看>>
HDU 6370(并查集)
查看>>
BZOJ 1207(dp)
查看>>
PE知识复习之PE的导入表
查看>>
HDU 2076 夹角有多大(题目已修改,注意读题)
查看>>
洛谷P3676 小清新数据结构题(动态点分治)
查看>>
九校联考-DL24凉心模拟Day2T1 锻造(forging)
查看>>
Attributes.Add用途与用法
查看>>
L2-001 紧急救援 (dijkstra+dfs回溯路径)
查看>>
javascript 无限分类
查看>>