C++开发工具:
/usr/bin/time
+运行程序 打印花费的时间和CPU占用率等(Linux)分块处理:
衍生出的概念:
定义/声明: 多个文件使用同一变量,在一处定义,其他文件声明,声明处编译时不查找变量,链接时去查找变量建立链接
头文件/源文件:多个文件需要使用同一个变量时,将声明放在一个头文件中,其他源文件引用头文件,编译时会展开头文件,提升写代码的效率
翻译单元
一处定义原则:同一变量、对象、函数等只有一处定义
#ifdef
解决 (可能有名字冲突)#pragma once
解决 (只处理一次)将翻译的那远转换为相应的汇编语言表示
编译***优化***
增量编译 V.S. 全部编译
获取main函数的返回值语句:echo $?
C++如果没有return值,规定默认返回0。
main只有两种形式:
int main()
int main(int argc,char* argv[])
(若不确定则使用双引号)
若自己编写头文件加.h后缀,C++标准库没有后缀
输出流: cout cerr clog
cout
和cerr
在终端打印出显示相同,可以输出定向到不同的文件当中
例如:
./HelloWorld >txt1 2>txt2 //输出到不同的文件
cat ./txt1 //查看不同的文件
cat ./txt2
输出流区别:1.输出目标;2是否立即刷新缓冲区
cerr
错误信息,立即刷新缓冲区
clog
日志信息,不立即刷新缓冲区
刷新缓冲区:std::flush
std::endl
(刷新缓冲区并且换行)
目的:防止不同人写的多段代码有命名冲突
//定义:
namespace NameSpace1{
void fun(){
}
}
//调用1:
NameSpace1::fun();
//调用2:
using namespace NameSpace1;
//调用3:
namespace ns1 = NameSpace1;
ns1::fun();
不推荐在函数外部使用using namespace
,不应在头文件中使用using namespace
,因为所有引用头文件的源文件都有命名冲突的风险
std
标准名字空间
编译得到的.o文件,通过nm + 文件名
命令查看所有外部链接
nm ./main.o
命名空间和名称改编:name mangling
nm ./main.o | c++filt -t
程序中只有一个main函数,所以只有main函数命名改编
使用printf
等C语言输入输出函数时要#include <cstdio>
printf
使用比较直观,但是需要对应不同数据类型要对应不同的占位符。
cout
使用简单不需要占位符,能够自动匹配输出类型。
const int x = 42;
定义x为常量,不能被改变值
将相关数据放在一起,通过.来访问元素
定义结构体 struct + 名字
通过.
操作符访问结构体内部元素
引入成员函数,更好表示函数与数据的相关性
因篇幅问题不能全部显示,请点此查看更多更全内容