C++语言复习笔记二

零.OOP

特征:抽象-封装-继承-多态

一.自定义数据类型

1.类

class 类名

{

private:

私有成员(本类)

public:

公共成员(所有)

protected:

保护成员(继承类)

}

2.结构体

class 结构体名

{

private:

私有成员(本类)

public:

公共成员(所有)

protected:

保护成员(继承类)

}

结构体默认成员public,类默认成员private

3.联合体

union 联合体名

{

private:

私有成员(本类)

public:

公共成员(所有)

protected:

保护成员(继承类)

}

联合体内所有成员不能同时存在

4.枚举

enum class 枚举类型名:类型

{

枚举1,枚举2...枚举n

}

二.构造器

1.定义

class Demo

{

public:

//默认生成空函数体的构造器

//若自定义构造器,系统不再生成默认构造器

//若要系统生成默认构造器,指明即可

Demo()=default;

Demo(int x,int y);

private:

int x,y;

}

2.初始化

Demo(int x,int y)

{

this->x=0;

this->y=0;

}

Demo():x(0),y(0){}

2.调用

Demo():Demo(0,0){}

三.复制构造器

调用复制构造器的情况:

1.以本类对象初始化新对象

2.实参初始化形参

3.return类的对象

class Point

{

private:

int x, y;

public:

Point():x(0),y(0){}

Point(int x, int y);

Point(const Point& p);

};

Point::Point(int x, int y)

{

this->x = x;

this->y = y;

}

Point::Point(const Point& p)

{

this->x = p.x;

this->y = p.y;

cout << "复制构造函数运行中..." << endl;

}

四.析构器

class Point

{

~Point();

}

五.作用域,可见性,生存期

局部作用域:形参和代码块中的标识符

类作用域:类内成员

静态生存期:与程序运行期相同(static变量)

动态生存期:从声明开始到作用域结束

六.组合

1.初始化顺序

构造构造器初始化表(按成员变量在类中的定义顺序)

执行构造器体

2.类声明

class 类名;

七.友元

1.友元函数

friend double view(const Point &p1,const Point &p2)

{

double x = p1.x - p2.x;

double y = p1.y - p2.y;

return sqrt(x * x + y * y);

}

2.友元类

class A

{

friend class B;

public:

void view() { cout << x << endl; }

private:

int x;

};

class B

{

public:

void set(int i)

{

a.x = 1;

}

void view()

{

a.view();

}

private:

A a;

};

八.继承

1.单继承

class 子类名:继承方式 父类名

{

...

}

2.多继承

class 子类名:继承方式 父类名1,继承方式 父类名2

{

...

}

派生类默认包含构造函数和析构函数的所有成员

3.继承方式

方式

可访问

public

父类的public和protected成员

protected

父类的protected成员

private

.

4.构造器,析构器

class 父親

{

public:

~父親()

{

cout << "父親析構器" << endl;

}

父親()

{

cout << "父親構造器" << endl;

}

};

class 兒子:父親

{

public:

~兒子()

{

cout << "兒子析構器" << endl;

}

兒子()

{

cout << "兒子構造器" << endl;

}

};

class 孫子:兒子

{

public:

~孫子()

{

cout << "孫子析構器" << endl;

}

孫子()

{

cout << "孫子構造器" << endl;

}

};

/*

父親構造器

兒子構造器

孫子構造器

孫子析構器

兒子析構器

父親析構器

*/

九.多态

1.虚函数

声明"virtual 函数类型 函数名(形参列表);

作用:虚函数存在的唯一目的就是被继承,进而实现运行时多态

class Parent

{

public:

virtual void view()

{

cout << "Are you ok" << endl;

}

};

class Child:Parent

{

public:

void view()

{

cout << "I'm very ok" << endl;

}

};

2.虚析构函数

virtual~类名();

3.纯虚函数

没有函数体的虚函数

virtual 函数名()=0;

4.抽象类

有虚函数的类为抽象类

十.运算符存重载

1.重载为成员函数

class Point

{

private:

int x, y;

public:

Point(int x, int y) :x(x), y(y){}

Point operator+(const Point &p) const;

void view();

};

Point Point::operator+(const Point& p) const

{

return Point(this->x + p.x, this->y + p.y);

}

void Point::view()

{

cout << "(" << this -> x << "," << this->y << ")" << endl;

}

2.重载为非成员函数

class Point

{

private:

int x, y;

public:

Point(int x, int y) :x(x), y(y){}

friend Point operator+(const Point& p1,const Point& p2);

void view();

};

Point operator+(const Point& p1, const Point& p2)

{

return Point(p1.x+p2.x,p1.y+p2.y);

}

void Point::view()

{

cout << "(" << this -> x << "," << this->y << ")" << endl;

}

c++语言自定义操作符,C++语言复习笔记二相关推荐

  1. Java语言基础(Java自我进阶笔记二)

    Java语言基础(Java自我进阶笔记二) 一. 什么是Java 的主类结构? 1. #mermaid-svg-xWTL2A8kDyyRPexH .label{font-family:'trebuch ...

  2. c语言自定义关键词,C语言关键字详解

    相对于其他语言来说,C语言的关键字算是少的了.在C98中关键子总共只有32个,我们来分析一下每个关键字在C语言中它独特的作用. 1.关于数据类型的关键字 (1) char :声明字符型变量或函数 (2 ...

  3. c++语言自定义操作符,C++11新特性之自定义字面量

    1.示例 C++11新标准中引入了用户自定义字面量,也叫自定义后缀操作符,即通过实现一个后缀操作符,将申明了该后缀标识的字面量转化为需要的类型.考察如下代码: long double operator ...

  4. 系列一:(选择结构与循环结构)含答案解析 C语言经典编程题 期末复习笔记

    清华大学出版社 C语言程序设计教程内容 如果对您有帮助,别忘了关注博主~ 包含内容:选择结构,循环结构,数组,函数,结构体,共用体 目录 清华大学出版社 C语言程序设计教程内容 一.选择结构与循环结构 ...

  5. 《编码:隐匿在计算机软硬件背后的语言(美)》读书笔记二

    串联--与门 上图的这样两个继电器的串联就形成了一个"与门",电气工程师用如下专门的符号表示一个与门 与门的符号不仅仅代替了两个串联的继电器,而且还暗示着上面的继电器与电源相连,两 ...

  6. c free语言自定义函数,C 语言free函数的工作原理

    今天在网上看到了这样一个问题,"如果malloc 了一块字符串的内存,然后,它改变了这个字符串的大小,问会不会有一部分内存没有被释放掉."这个问题,以前的确没有仔细想过. 当然,我 ...

  7. 《R语言入门与实践》学习笔记二(chapter4~6)

    目标 : 如何存储.检索和修改计算机内存中的数据 设计一个扑克牌模拟系统,能够自动洗牌和发牌,系统可以记住发牌的结果, 四个任务 : 1 创建一副牌 2   发牌和洗牌函数 3 改变点数系统适应不同的 ...

  8. 操作系统复习笔记(二)

    1.问答题:有一个文件F,有A,B两组进程共享这个文件,同组的进程可以同时读文件F,但当有A组(或B组)的进程在读文件F时就不允许B组(或A组)的进程读, 解:定义两个计数器C1,C2,分别记录A组和 ...

  9. 概率论复习笔记二——离散型分布和连续型分布

    一.离散型分布 1.1 伯努利分布 在一次试验中,事件AAA出现的概率为ppp,不出现的概率为q=1−pq=1-pq=1−p,若以β\betaβ记事件AAA出现的次数,则β\betaβ取0,10, 1 ...

最新文章

  1. 关于在hdfs上对数据创建外部表的原因
  2. 【Python学习系列二十六】networkx库图最短路径求解
  3. matlab叠加定理怎么输入,自动控制原理(第2版)(余成波-张莲-胡晓倩)习题全解及MATLAB实验-----第1、2章习题解答.doc...
  4. 51nod 1027 大数乘法
  5. 简单的Gradle Java插件自定义
  6. MySQL8单表记录多少_mysql学习笔记之8(单表数据记录查询)_mysql
  7. java引用微信支付的p12证书文件
  8. 六年Java程序员转行做鸭
  9. 猫哥教你写爬虫 043--模拟浏览器
  10. Vue template挂载中el和mouted的使用和区别
  11. UA MATH563 概率论的数学基础1 概率空间4 实数域上的概率测度
  12. 计算机科学论文生成器,高考满分作文生成器来了!分分钟批量完成「生活在XX上」...
  13. 微信分享到朋友圈的链接,内容打开正常,但在微信中分享时封面缩略图图像和标题显示不出来?
  14. 怎样在iPhone、iPad上的Safari浏览器中快速关闭所有标签页?
  15. 微信转账记录删除了服务器还有吗,微信转账记录删除了还能查到吗,怎么查删掉的...
  16. Windows系统下载
  17. 每天一个小技巧之Mac强制退出应用程序
  18. Android 信号查看,安卓Android手机怎么快速查看系统信号强度
  19. win10系统下配置maven环境
  20. java连续多位相同字符判断的正则表达式_java连续多位相同字符判断的正则表达式...

热门文章

  1. 【数据结构与算法】之深入解析“二叉搜索树中的插入操作”的求解思路与算法示例
  2. HarmonyOS之深入解析媒体会话的管理
  3. HarmonyOS之AI能力·分词
  4. Django MPTT —— 概述
  5. Django 使用 HttpResponse 返回 json 字符串显示 Unicode 编码
  6. PaddlePaddle训练营——公开课——AI核心技术掌握——第1章迈入现代人工智能的大门——深度学习简介
  7. 【机器视觉】 global算子
  8. 【MFC】带进度条的状态栏
  9. 【Linux】一步一步学Linux——ldd命令(251)
  10. 【Android】 常用的Intent