C++ 补课(一)
1,在C语言中,全局变量必须声明在所有的函数之前,局部变量必须声明在所有可执行语句之前; C++ 允许在代码块的任何位置对局部变量进行声明
2,常量定义方面,C语言 #define 可能因计算的优先级出现问题,C++ const:不允许在程序的任何位置改变const修饰符声明的常量,常量的名称一般用大写字母
3,C 语言不允许函数重载的概念,对于不同的数据类型需要给出不同的函数
4,在C语言中使用malloc()函数分配动态内存空间,使用free()函数释放动态内存空间;(需要包含malloc.h 或 stdlib.h)(malloc函数分配的空间无法得知存放的数据类型,返回的是void型指针,还应该将其返回类型强制转换)
C++中使用new delete (可以自动计算所需要分配的内存大小,并能返回正确的指针类型,若没有足够内存,将返回空指针)
5,C++ 动态特性:多态性,动态联编,虚函数
虚函数 —— 被virtual关键字修饰的成员函数,用于实现多态(多态的关键之处就在于使用指向基类的指针或引用来操作子类对象)
class A
{
public:
virtual void print(){cout<<"This is A"<<endl};
};
class B:public A
{
public:
void print(){cout<<"This is B"<<endl;}
};
int main()
{
A aa;
B bb;
A* s1=&aa;
A* s2=&bb;
s1->print();
s2->print();
}
多态性实现方式:强制多态(类型强制转换),重载多态(函数及运算符重载),类型参数化多态(模板),以及包含多态(类继承已经虚函数)静态联编 —— 联编工作出现在编译链接阶段,联编过程在程序开始运行之前完成动态联编 —— 在编译阶段并不知道要调用哪个函数,只有在程序执行时才能确定,联编工作在程序运行时进行
6,对象的生存周期:局部对象 —— 当程序退出该对象所在函数体时 —— 函数体全局对象 —— 程序运行结束 —— 包含该文件的整个程序中静态对象 —— 从定义对象开始到文件结束动态对象 —— new _ delete
7,C++ 类体中不允许对所定义的数据成员进行初始化在类的成员函数中调用非成员函数,在非成员函数前面必须加上 ::构造函数必须是共有的仅当没有自定义构造函数时编译器才会自动创建
8,浅拷贝就是对默认拷贝构造函数所实现的的数据成员逐一赋值,如果类中含有指针类型数据,将会产生错误,为了解决问题,需要显示定义拷贝构造函数,使其不但可以复制数据成员,而且可以为对象分配内存空间,这就是深拷贝。如果在类定义中没有声明,C++编译器会自动在类中加入四个函数:构造函数,析构函数,拷贝构造函数,拷贝赋值函数。class A{…}A a1;A a2=a1; // 调用拷贝赋值函数A a3(a1); // 调用拷贝构造函数以上若没有显示定义分配内存,全是浅拷贝 —— 在对象中不包含其他对象的引用时,深浅拷贝一致
9,析构函数只能有一个析构函数是成员函数,析构函数可以手动调用也可以被系统调用当一个对象是使用new 运算符动态创建的,那么在使用delete运算符将其释放时,会自动调用析构函数
10, 静态成员变量不是实例对象的一部分,而是所有对象所共有的,因此必须在类的内部声明,在类的外部定义
11,友元提供了不同类与函数之间数据共享的能力 —— 普通的成员函数只能访问其所在类内部的其他成员,而被声明为友元的函数则卡宴访问相关的所有类内部的成员友元的关系不是双向的友元关系不能被继承友元关系不能被传递
C++ 补课(一)的更多相关文章
- IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理
1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以“人”为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是整个IM系统都是以长 ...
- IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列
1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...
- 补课:PageRank
最近连续听到PageRank算法,久闻其名,不闻其详,心里虚得很,今儿补补课. PageRank算法的网络资料非常全面,毕竟是将近二十年的经典算法,算法细节可以参考文末链接,这里简单说说我的理解. P ...
- IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token
本文引用了简书作者“骑小猪看流星”技术文章“Cookie.Session.Token那点事儿”的部分内容,感谢原作者. 1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动 ...
- IM开发基础知识补课(七):主流移动端账号登录方式的原理及设计思路
1.引言 在即时通讯网经常能看到各种高大上的高并发.分布式.高性能架构设计方面的文章,平时大家参加的众多开发者大会,主题也都是各种高大上的话题——什么5G啦.AI人工智能啦.什么阿里双11分分钟多少万 ...
- Web端即时通讯基础知识补课:一文搞懂跨域的所有问题!
本文原作者: Wizey,作者博客:http://wenshixin.gitee.io,即时通讯网收录时有改动,感谢原作者的无私分享. 1.引言 典型的Web端即时通讯技术应用场景,主要有以下两种形式 ...
- Linux知识补课
Linux补课 已经将开发环境转Linux了(当然用的是ubuntu,图像界面还是舒服一点,支持也多),不上QQ和微信的话用的还是挺舒服的,但是无奈基础欠账太多,这里赶快补一下 Linux和Unix的 ...
- javaweb学习笔记整理补课
javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...
- 「补课」进行时:设计模式(5)——从 LOL 中学习代理模式
1. 前文汇总 「补课」进行时:设计模式系列 2. 从 LOL 中学习代理模式 我是一个很喜欢玩游戏的人,虽然平时玩游戏的时间并不多,但我也是一个忠实的 LOL 的爱好者,就是段位有点惨不忍睹,常年倔 ...
- 趁着同事玩游戏偷偷认识k8s一家子补补课
趁着同事玩偷偷认识k8s一家子补补课 Kubernetes集群这个大家庭在容器化时代能够新军崛起,要感谢其众多可靠稳定,工作认真负责的优质成员. 这些兄弟姐妹们为集群提供故障转移和高可用性,保证k8s ...
随机推荐
- YYDispatchQueuePool阅读笔记
阅读了开源大神的YYDispatchQueuePool,在此记下一些从中学到的东西. 首先YYDispatchQueuePool.m文件中有如下类型对应: static inline dispatch ...
- UI Framework-1: Aura Views
Views Views is a user interface framework built on a type called, confusingly, View. Responsible for ...
- Python爬虫基础示例
使用pip安装相关依赖: pip install requests pip install bs4 安装成功提示:Successfully installed *... 爬取中国天气网数据示例代码: ...
- 今日SGU 5.25
SGU 194 题意:无源汇有上下界的最大流 收获:https://wenku.baidu.com/view/0f3b691c59eef8c75fbfb35c.html #include<bit ...
- 【Round #36 (Div. 2 only) C】Socks Pairs
[题目链接]:https://csacademy.com/contest/round-36/task/socks-pairs/ [题意] 给你n种颜色的袜子,每种颜色颜色的袜子有ai只; 假设你在取袜 ...
- [Python] Generating random numbers using numpy lib
import numpy as np def test_run(): data=np.random.random((3,4)) """ [[ 0.80150549 0.9 ...
- Android资源之图像资源(状态图像资源)
在上一篇博文中.我主要解说了XML图像资源中的图层资源,在此图像资源博文中我会给大家陆续解说XMl图像资源的图像状态资源.图像级别资源.淡入淡出资源.嵌入图像资源.剪切图像资源和外形资源. 1.图像状 ...
- [BZOJ4026]dC Loves Number Theory 欧拉函数+线段树
链接 题意:给定长度为 \(n\) 的序列 A,每次求区间 \([l,r]\) 的乘积的欧拉函数 题解 考虑离线怎么搞,将询问按右端点排序,然后按顺序扫这个序列 对于每个 \(A_i\) ,枚举它的质 ...
- 29.AngularJS 简介
转自:https://www.cnblogs.com/best/tag/Angular/ AngularJS 是一个 JavaScript 框架.它可通过 <script> 标签添加到 H ...
- avalon 作用域
作用域绑定(ms-controller, ms-important) 如果一个页面非常复杂,就需要划分模块,每个模块交由不同的ViewModel去处理.我们就要用到ms-controller与ms-i ...