c++语言自定义操作符,C++语言复习笔记二
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++语言复习笔记二相关推荐
- Java语言基础(Java自我进阶笔记二)
Java语言基础(Java自我进阶笔记二) 一. 什么是Java 的主类结构? 1. #mermaid-svg-xWTL2A8kDyyRPexH .label{font-family:'trebuch ...
- c语言自定义关键词,C语言关键字详解
相对于其他语言来说,C语言的关键字算是少的了.在C98中关键子总共只有32个,我们来分析一下每个关键字在C语言中它独特的作用. 1.关于数据类型的关键字 (1) char :声明字符型变量或函数 (2 ...
- c++语言自定义操作符,C++11新特性之自定义字面量
1.示例 C++11新标准中引入了用户自定义字面量,也叫自定义后缀操作符,即通过实现一个后缀操作符,将申明了该后缀标识的字面量转化为需要的类型.考察如下代码: long double operator ...
- 系列一:(选择结构与循环结构)含答案解析 C语言经典编程题 期末复习笔记
清华大学出版社 C语言程序设计教程内容 如果对您有帮助,别忘了关注博主~ 包含内容:选择结构,循环结构,数组,函数,结构体,共用体 目录 清华大学出版社 C语言程序设计教程内容 一.选择结构与循环结构 ...
- 《编码:隐匿在计算机软硬件背后的语言(美)》读书笔记二
串联--与门 上图的这样两个继电器的串联就形成了一个"与门",电气工程师用如下专门的符号表示一个与门 与门的符号不仅仅代替了两个串联的继电器,而且还暗示着上面的继电器与电源相连,两 ...
- c free语言自定义函数,C 语言free函数的工作原理
今天在网上看到了这样一个问题,"如果malloc 了一块字符串的内存,然后,它改变了这个字符串的大小,问会不会有一部分内存没有被释放掉."这个问题,以前的确没有仔细想过. 当然,我 ...
- 《R语言入门与实践》学习笔记二(chapter4~6)
目标 : 如何存储.检索和修改计算机内存中的数据 设计一个扑克牌模拟系统,能够自动洗牌和发牌,系统可以记住发牌的结果, 四个任务 : 1 创建一副牌 2 发牌和洗牌函数 3 改变点数系统适应不同的 ...
- 操作系统复习笔记(二)
1.问答题:有一个文件F,有A,B两组进程共享这个文件,同组的进程可以同时读文件F,但当有A组(或B组)的进程在读文件F时就不允许B组(或A组)的进程读, 解:定义两个计数器C1,C2,分别记录A组和 ...
- 概率论复习笔记二——离散型分布和连续型分布
一.离散型分布 1.1 伯努利分布 在一次试验中,事件AAA出现的概率为ppp,不出现的概率为q=1−pq=1-pq=1−p,若以β\betaβ记事件AAA出现的次数,则β\betaβ取0,10, 1 ...
最新文章
- 关于在hdfs上对数据创建外部表的原因
- 【Python学习系列二十六】networkx库图最短路径求解
- matlab叠加定理怎么输入,自动控制原理(第2版)(余成波-张莲-胡晓倩)习题全解及MATLAB实验-----第1、2章习题解答.doc...
- 51nod 1027 大数乘法
- 简单的Gradle Java插件自定义
- MySQL8单表记录多少_mysql学习笔记之8(单表数据记录查询)_mysql
- java引用微信支付的p12证书文件
- 六年Java程序员转行做鸭
- 猫哥教你写爬虫 043--模拟浏览器
- Vue template挂载中el和mouted的使用和区别
- UA MATH563 概率论的数学基础1 概率空间4 实数域上的概率测度
- 计算机科学论文生成器,高考满分作文生成器来了!分分钟批量完成「生活在XX上」...
- 微信分享到朋友圈的链接,内容打开正常,但在微信中分享时封面缩略图图像和标题显示不出来?
- 怎样在iPhone、iPad上的Safari浏览器中快速关闭所有标签页?
- 微信转账记录删除了服务器还有吗,微信转账记录删除了还能查到吗,怎么查删掉的...
- Windows系统下载
- 每天一个小技巧之Mac强制退出应用程序
- Android 信号查看,安卓Android手机怎么快速查看系统信号强度
- win10系统下配置maven环境
- java连续多位相同字符判断的正则表达式_java连续多位相同字符判断的正则表达式...
热门文章
- 【数据结构与算法】之深入解析“二叉搜索树中的插入操作”的求解思路与算法示例
- HarmonyOS之深入解析媒体会话的管理
- HarmonyOS之AI能力·分词
- Django MPTT —— 概述
- Django 使用 HttpResponse 返回 json 字符串显示 Unicode 编码
- PaddlePaddle训练营——公开课——AI核心技术掌握——第1章迈入现代人工智能的大门——深度学习简介
- 【机器视觉】 global算子
- 【MFC】带进度条的状态栏
- 【Linux】一步一步学Linux——ldd命令(251)
- 【Android】 常用的Intent