CPP基础
CPP基础
1. 如果没有指明访问限定符(public,private),class中默认的private,而struct中的成员默认是public的。
#include <iostream>
using namespace std;
int main()
{
cout<<"Hello world"<<endl;
return 0;
}
2.命名空间namespace
using namespace std;声明后,该命名空间的函数可直接调用。
函数前可不加命名空间,std::cout, std::endl。
此外,程序有一个默认的无名命名空间,若调用全局变量,可::cout(默认的无命名空间函数或变量)。
3.C++中定义了布尔类型
bool类型变量可赋值为true或false。
4.引用类型
引用相当于为某个变量起一个别名,注意引用操作的是变量,不是常量。
int m;
int &n = m;
规则:
1)引用被创建的同时必须初始化(指针则可以在任何时候初始化)。
2)不能有NULL引用,引用必须与合法的存储单元关联。
3)一旦引用被初始化,就不能改变引用的对象。
引用的主要功能是传递函数的参数和返回值。
void swap(int &x, int &y)
{
int temp;
temp = x;
x = y;
y = temp;
}
传引用,实为传变量本身。
引用作函数的返回值,可以作左值。若不想其做左值,可加const修饰。
char arr[10] = {'a', 'b', 'c'};
char & foo(int i)
{
return arr[i];
}
foo(1) = 'h';
5.new和delete为C++关键字
数组:int *arr = new int[10];
delete [] arr;
new和malloc在heap上分配的空间地址不同,因此malloc和free配对使用,new和delete配对使用。
6.函数的缺省参数
c++在声明函数时允许给某些参数制定缺省值。
参数缺省值一般写在声明中。
缺省参数从右向左连续赋值。
6.inline函数
c++中用inline函数来取代C语言中类似函数的宏定义。
使用内联函数时注意inline关键字应该和定义放在一起,而不是和声明放在一起。
由于inline函数相当于宏定义,因此通常将inline函数的实现直接放在头文件中,不写声明。
内联函数优化级为O2。
7.在C++代码中调用C的库函数, 让C函数可以运行在C++环境中(C++支持函数重载,编译时符号名为函数名+参数类型)。
#ifdef __cplusplus
extern "C" {
#endif
int add(int a, int b);
#ifdef __cplusplus
}
#endif
8. C++支持函数overload,两个或两个以上的函数,取相同的函数名,但是形参的个数或类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数。
int add(int, int)在底层被重载为addii,double add(double, double)在底层被重载为adddd。
用nm命令察看可执行文件的符号表。
9. 类的对象中只保存变量,不保存成员函数,sizeof求得的大小只是变量占用的空间。
C++中定义的struct无成员时,也占用一个字节;而在C语言中不占用空间。
CPP基础的更多相关文章
- 个人学习记录-Cpp基础-成员初始化列表
Translator Translator 参考链接: https://blog.csdn.net/XIONGXING_xx/article/details/115553291http ...
- win7 32 bit VS2012 OpenCV3.0配置
今天看CPP基础,想起来之前在vs2012配置opencv3未成功,就忍不住再次配置一... 环境:win7 32bit vs2012 opencv3.0 主要参考这几篇博文:1,2,3 上面的博文已 ...
- 在vs2013下手把手创建/调用dll
body { font: 16px } 参考了大佬的文章 首先,体会一下静态编译: 创建Win32Project,选DLL,添加一个.h和.cpp文件 点击生成解决方案,然后去debug目录下拷贝.l ...
- 双目相机标定以及立体测距原理及OpenCV实现
单目相机标定的目标是获取相机的内参和外参,内参(1/dx,1/dy,Cx,Cy,f)表征了相机的内部结构参数,外参是相机的旋转矩阵R和平移向量t.内参中dx和dy是相机单个感光单元芯片的长度和宽度,是 ...
- 头部姿态估计 - OpenCV/Dlib/Ceres
基本思想 通过Dlib获得当前人脸的特征点,然后通过旋转平移标准模型的特征点进行拟合,计算标准模型求得的特征点与Dlib获得的特征点之间的差,使用Ceres不断迭代优化,最终得到最佳的旋转和平移参数. ...
- QT_study
https://blog.csdn.net/a313827758/article/details/72736552 https://blog.csdn.net/xbcreal/article/deta ...
- [WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析
[WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析 标签: webkit内核JavaScriptCore 2015-03-26 23:26 2285 ...
- C++基础知识
基础知识 &&和||具有"短路"特性,特别是在第二个操作数有++或--时要注意. 显式类型转换 (类型说明符)表达式 //C风格的 类型说明符(表达式) //cpp ...
- Storm基础
Storm基本概念 Storm是一个开源的实时计算系统,它提供了一系列的基本元素用于进行计算:Topology.Stream.Spout.Bolt等等. 在Storm中,一个实时应用的计算任务被打包作 ...
随机推荐
- SharePoint CAML In Action——Part II
在SharePoint中,相对于Linq to SharePoint而言,CAML是轻量化的.当然缺点也是显而易见的,"Hard Code"有时会让你抓狂.在实际场景中,经常会根据 ...
- HANA初印象
今天手懒,看了一些SAP HANA 的一些外文介绍,不翻译了,直接剽窃过来,供参考. 1. HANA 是什么东西? “HANA doesn't actually mean anything, but ...
- Debian本地镜像长时间不更新
一.执行apt-get update 使用一个长期未更新的本地源,得到错误的提示: Release file for ... is expired. Updates for this reposito ...
- Office 2010 安装程序包的语言不受系统支持
主要看了这篇文章之后让我有了处理思路. 最后我直接用压缩文件进行安装,没有时行解压.这样就不会出现找不到什么文件的问题了.所以语言不受系统支持问题也就解决了. 原文内容: 前几天,有位好友跟我说他的 ...
- 两条命令在Linux主机之间建立信任关系
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa //生成当前用户密钥 ssh-copy-id -i /root/.ssh/id_rsa.pub r ...
- Git 工具 - 凭证存储
凭证存储 如果你使用的是 SSH 方式连接远端,并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据. 然而,这对 HTTP 协议来说是不可能的 —— 每一个连接都是需要 ...
- Mysql数据库If语句的使用
MySQL的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用: IF表达式 [sql] view plain copy 如果 expr1 是TRUE (expr1 & ...
- OpenVSwitch 硬件加速浅谈
https://zhuanlan.zhihu.com/p/57870521 本文首发SDNLAB. 现代的虚拟化技术使得开发和部署高级网络服务变得更加简单方便.基于虚拟化的网络服务,具有多样性,低成本 ...
- Redis List数据类型
一.概述: 在Redis中,List类型是按照插入顺序排序的字符串链表.和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素.在插入时,如果该键并不存在, ...
- DIOCP开源项目-DIOCP3 大文件的传输DEMO<断点续传>
首先该DEMO在StreamCoder上面做的改动,期间导致StreamCoderDEMO经常出现问题,导致大家运行的时候,频频出现问题,表示道歉. 以下是测试的结果,从服务器下载传输了一个3G左右的 ...