当前位置: 首页 > news >正文

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语言中不占用空间。

相关文章:

  • vue - for遍历数组
  • 笔记本电脑该如何装监控软件?
  •  一套莫尔斯电报听写、翻译系统
  • linux系统挂载
  • vue的全局变量和全局拦截请求器
  • 微信小程序 - 输入起点、终点获取距离并且进行路线规划(腾讯地图)
  • 讨论微服务之前,你知道微服务的 4 个定义吗?
  • quick sort(重复数版)
  • 二层负载分担(一)
  • Material Design 实战 之第三弹—— 悬浮按钮和可交互提示(FloatingActionButton Snackbar CoordinatorLayout)...
  • WPF一步步实现完全无边框自定义Window(附源码)
  • 简单易懂的laravel事件,这个功能非常的有用(监听事件,订阅者模式)
  • express中间件系统的基本实现
  • iOS开发 适配iPhoneX/iPhoneXr/iPhoneXs/iPhonexs max
  • 互融云采购招标供应链系统:为供应链行业创造良好环境
  • chrome扩展demo1-小时钟
  • Cumulo 的 ClojureScript 模块已经成型
  • fetch 从初识到应用
  • golang中接口赋值与方法集
  • HTML-表单
  • Java 网络编程(2):UDP 的使用
  • Javascript基础之Array数组API
  • JavaScript新鲜事·第5期
  • js ES6 求数组的交集,并集,还有差集
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • quasar-framework cnodejs社区
  • Terraform入门 - 3. 变更基础设施
  • 彻底搞懂浏览器Event-loop
  • 工作中总结前端开发流程--vue项目
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 简析gRPC client 连接管理
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 聊聊flink的TableFactory
  • 每天一个设计模式之命令模式
  • 前端面试之CSS3新特性
  • 使用Gradle第一次构建Java程序
  • 思维导图—你不知道的JavaScript中卷
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 学习JavaScript数据结构与算法 — 树
  • 一道面试题引发的“血案”
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ​学习一下,什么是预包装食品?​
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (4) PIVOT 和 UPIVOT 的使用
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (免费分享)基于springboot,vue疗养中心管理系统