1、C++ Mooc | C++工作原理

源文件经过编译器,可以产生lib 、dll、 exe 。

运算符<<就是函数而已,如下:
std::cout<<" dump duck ! "<<std :: endl;
等价于 ==
std ::cout.print(" dump duck !").print(std ::endl);

visual studio 中的solution 配置,是定义了如何为当前平台 编译的规则。

函数的声明与定义:
如果声明,没定义,那么就可以过编译,但是过不了linker
所以,linker的工作就是resolve symbols,联通各个函数,用声明去找函数的定义,再把他们两个连接起来。

编译过程:

1、预处理pre-processor,评估所有#
2、标记解释 和 解析

结果是创建某种 abstract syntax tree 抽象语法树。也就是我们自己写的代码的表达,是用抽象语法树的方式表达。
说到底编译就是把源代码 转成 const 常量 、指令,只要抽象语法树构建完成,就可以产生机器代码了。

连接过程:

当运行你的程序时,C runtime 库就会所,main函数在哪里,要调到哪里开始执行代码。
可以自己定义程序的entry point ,也就是main函数,具体在连接器的高级选项中。

static 关键字,用他定义的东西只在当前的编译单元(cpp)中有效。

北京大学的 C++ MOOC 课程由郭炜老师讲授,涵盖了丰富的理论知识与实践案例。以下是针对 `Student` 类的设计以及相关知识点的解答。 ### 补充完整的 `Student` 类 为了实现题目所描述的功能,需定义一个名为 `Student` 的类来管理学生的姓名、学号和成绩等信息,并提供输入 (`input`)、计算平均分 (`calculate`) 和输出数据 (`output`) 方法。 ```cpp #include <iostream> #include <string> using namespace std; class Student { private: string name; int id; double scores[3]; // 假设每名学生有三门课的成绩 double averageScore; public: void input() { cout << "Enter the student's name: "; cin >> name; cout << "Enter the student's ID: "; cin >> id; cout << "Enter three course scores: "; for (int i = 0; i < 3; ++i) { cin >> scores[i]; } } void calculate() { double sum = 0; for (int i = 0; i < 3; ++i) { sum += scores[i]; } averageScore = sum / 3.0; } void output() const { cout << "Name: " << name << ", ID: " << id << ", Average Score: " << fixed << setprecision(2) << averageScore << endl; } }; ``` 以上代码实现了对学生基本信息及成绩的操作[^1]。通过私有成员变量存储学生的具体属性,而公有方法则提供了对外部接口的支持。 ### 关于默认复制构造函数的知识扩展 当创建一个新的对象并用已存在的同类对象对其进行初始化时,默认情况下会调用该类型的复制构造函数。例如,在下面的例子中: ```cpp B b1; B b2(b1); ``` 这里 `b2` 使用了 `b1` 来完成自身的初始化过程。由于 `B` 中包含了另一个类型 `A` 的实例化对象 `a`,因此在执行此操作期间不仅触发了 `B` 自己的复制构造逻辑,同时也激活了内部组件 `A::A(const A&)` 构造器[^2]。 ### 引用作为参数传递的优势 利用引用代替传统指针或者值拷贝的方式能够有效减少不必要的内存分配动作,从而提高运行效率。特别是在交换两个整型数值的时候,如下所示: ```cpp void swap(int &a, int &b){ int temp = a; a = b; b = temp; } ``` 这段简单的例子展示了如何借助引用机制快速便捷地修改原始实参的内容而不必担心额外开销问题[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值