cpp学习日报 从零开始学习cpp
12月11日
今日进展
列举今日主要工作任务的进展情况
目前能在以下几种情况下运行cpp文件
- linux系统或vscode终端可以直接用命令跑,优点是轻便:
vi hello.cpp //vim 新建并打开cpp文件
g++ hello.cpp -o hello.exe //最简单的编译命令,并生成名称为hello.exe的执行文件;如果有依赖文件,指令会变化, 用makefile较好;
./hello.cpp //执行此hello文件
- vscode配置好了环境,优点是方便调试:
两款插件compile runner和code runner使得可以按F6直接运行或者按右上角箭头运行; 比较奇怪的是两个设置run in terminal和run in extension-terminal会影响code-runner右上箭头的结果;并且run code的输出界面无法输入?
12月12日
今日进展
列举今日主要工作任务的进展情况
跟js的类很像,但cpp是把externals里面的declaration和prototypes写在.h文件里,而把类定义的方法(definition)写在cpp文件里
-
工作2: 类, 为什么声明写在.h, 定义写在.cpp内; 而不像js一样,写在一个.js文件,然后export出来就行?
解释: .h被多个cpp文件引用时,因为.h里会写标准头, 如c语言的#pragma once, cpp如下的标准头结构, 以防出现重复声明; 把定义部分写在.cpp文件里,然后引入.h里的声明,这样编译的时候就只会编译一次. 因为.h即使被多次引用, 由于下面的标准头结构的存在,只会声明一次,而声明的这一次,在编译的时候才会把.cpp里的定义打包放进一个文件里进行编译; 这样就避免了重复定义和声明. js有闭包的存在, 打包形成私有空间, export的原理是私有空间开放了一个方法给引入方调用, 因此不会影响
工作3: 成员变量
类里有成员变量和成员函数, 成员函数可以直接使用这些成员变量,而不用考虑他们存在哪里. cpp里类的成员变量, 我的理解为js里类/构造函数的实例, 从prototype上继承而来变量, 或者es6写法class里的constructor(); 不过不太一样的是, js里使用本身的变量时,需要带上this来指向自身. 两种不同的写法如下:
|