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基础的更多相关文章

  1. 个人学习记录-Cpp基础-成员初始化列表

    Translator     Translator     参考链接: https://blog.csdn.net/XIONGXING_xx/article/details/115553291http ...

  2. win7 32 bit VS2012 OpenCV3.0配置

    今天看CPP基础,想起来之前在vs2012配置opencv3未成功,就忍不住再次配置一... 环境:win7 32bit vs2012 opencv3.0 主要参考这几篇博文:1,2,3 上面的博文已 ...

  3. 在vs2013下手把手创建/调用dll

    body { font: 16px } 参考了大佬的文章 首先,体会一下静态编译: 创建Win32Project,选DLL,添加一个.h和.cpp文件 点击生成解决方案,然后去debug目录下拷贝.l ...

  4. 双目相机标定以及立体测距原理及OpenCV实现

    单目相机标定的目标是获取相机的内参和外参,内参(1/dx,1/dy,Cx,Cy,f)表征了相机的内部结构参数,外参是相机的旋转矩阵R和平移向量t.内参中dx和dy是相机单个感光单元芯片的长度和宽度,是 ...

  5. 头部姿态估计 - OpenCV/Dlib/Ceres

    基本思想 通过Dlib获得当前人脸的特征点,然后通过旋转平移标准模型的特征点进行拟合,计算标准模型求得的特征点与Dlib获得的特征点之间的差,使用Ceres不断迭代优化,最终得到最佳的旋转和平移参数. ...

  6. QT_study

    https://blog.csdn.net/a313827758/article/details/72736552 https://blog.csdn.net/xbcreal/article/deta ...

  7. [WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析

    [WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析 标签: webkit内核JavaScriptCore 2015-03-26 23:26 2285 ...

  8. C++基础知识

    基础知识 &&和||具有"短路"特性,特别是在第二个操作数有++或--时要注意. 显式类型转换 (类型说明符)表达式 //C风格的 类型说明符(表达式) //cpp ...

  9. Storm基础

    Storm基本概念 Storm是一个开源的实时计算系统,它提供了一系列的基本元素用于进行计算:Topology.Stream.Spout.Bolt等等. 在Storm中,一个实时应用的计算任务被打包作 ...

随机推荐

  1. python 多进程,实际上都没有运行,sleep

    进程以及状态 1. 进程程序:例如xxx.py这是程序,是一个静态的 进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元. 不仅可以通过线程完成多任务,进程也是可以 ...

  2. js 冷门的 label 语法

    https://github.com/Tencent/vConsole/blob/dev/src/lib/query.js#L142 https://www.cnblogs.com/hjbky/p/6 ...

  3. 如何在PHP项目中使用phinx进行数据迁移和建表

    建表 phinx\bin\phinx.bat migrate -e production 建设 phinx.yml文件 paths: migrations: %%PHINX_CONFIG_DIR%%\ ...

  4. ELK logstash邮件报警

    这个方法有一个问题就是我这边不能给我们公司的邮箱发邮件.还有就是我们有两个邮箱一个是腾讯企业邮箱,还有一个就是我们的集团邮箱 使用下面的这个方法是不能给我们的集团邮箱发邮件的.第二个问题就是这个方法给 ...

  5. activiti设置流程变量

    public static void mian(String args[]){ ProcessEngine processEngine  = ProcessEngine.getDefaultProce ...

  6. 如何使用 t-sql 更新数据库中日期字段的部分数据(年?月?日?时?分?秒?)

    嗯,从网上找到了一些内容,综合利用了sql server的一些内置方法 首先是 convert 方法:https://msdn.microsoft.com/zh-cn/library/ms187928 ...

  7. UI控件篇——UIPageControl及其自定义

    UIPageControl类提供一行点来指示当前显示的是多页面视图的哪一页.当然,由于UIPageControl类可视样式的点击不太好操作,所以最好是确保再添加了可选择的导航选项,以便让页面控件看起来 ...

  8. 深入理解Linux内核-虚拟文件系统

    Linux 成功的关键之一是它具有和其他操作系统和谐共存的能力 5个标准文件类型:1.普通文件2.目录文件3.符号链接文件4.设备文件5.管道文件 虚拟文件系统(Virtual FileSystem) ...

  9. express应用中常用中间件介绍

    var strftime = require('strftime'); 时间格式化中间件,功能和moment.js差不多 var methodOverride = require('method-ov ...

  10. android studio - Indexing paused due to batch updated

    傻逼的 Android Studio  又开抽疯了....  日 打开项目就出现   Indexing paused due to batch updated ,并且半天没反应........ 解决办 ...