cpp学习记录1-面向对象/类

cpp学习日报
从零开始学习cpp

12月11日

今日进展

列举今日主要工作任务的进展情况

  • 一:配置g++环境。

目前能在以下几种情况下运行cpp文件

  1. linux系统或vscode终端可以直接用命令跑,优点是轻便:
vi hello.cpp //vim 新建并打开cpp文件
g++ hello.cpp -o hello.exe //最简单的编译命令,并生成名称为hello.exe的执行文件;如果有依赖文件,指令会变化, 用makefile较好;
./hello.cpp //执行此hello文件
  1. vscode配置好了环境,优点是方便调试:
    两款插件compile runner和code runner使得可以按F6直接运行或者按右上角箭头运行;
    比较奇怪的是两个设置run in terminal和run in extension-terminal会影响code-runner右上箭头的结果;并且run code的输出界面无法输入?
  • 二,学习:面向对象的几大原则

12月12日

今日进展

列举今日主要工作任务的进展情况

  • 工作一:cpp的类怎么写

跟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来指向自身.
两种不同的写法如下:
在这里插入图片描述

Guess you like

Origin blog.csdn.net/Fky_mie/article/details/121914439