学习侯捷c++面向对象高级开发时培养大气的编程习惯几个注意事项(一)

本文分享了在学习侯捷老师的C++面向对象高级开发课程时的两大编程技巧:使用防卫式声明避免头文件重复包含导致的重复定义问题,以及在构造函数中使用初值列提升初始化效率,对C++初学者特别有帮助。

培养大气的编程习惯几个注意事项(一)

主要是在学习侯捷老师的c++面向对象高级开发时遇到的一些注意的点,对初学者面向对象编程有很大的帮助。

1.Header (头文件) 中的防卫式声明

在这里插入图片描述
防卫式声明的作用:
避免了编译器在编译阶段重复包含同一段声明,防止由于同一个头文件被包含多次,而导致了重复定义。具体带来的影响可以看下面这个例子。

– “Car.h”,代码如下(并没有添加防卫式声明):
在这里插入图片描述
– “Person.h”,代码如下(包含了Car.h文件):
在这里插入图片描述
– 在"main.cpp"中,我们同时include两个头文件:
在这里插入图片描述
此时,我们会发现编译出错:Redefinition of ‘Car’.

可是为什么会出现这样的情况呢?

我们需要知道,在预编译阶段,编译器会把.h文件展开,即main.cpp中的代码可以看做是:

class Car
{
    // ...
};
 
class Car
{
    // ...
};
 
class Person
{
public:
    Car car;
};
 
int main(int argc, const char * argv[]) {
    Person p;
}

所以,我们可以知道防卫式声明的作用是:防止由于同一个头文件被包含多次,而导致了重复定义。

2.写构造函数时是否用到了初值列(initialization list)

这也是考察你是否经受过系统训练的一个点,在我们写构造函数的时候编译器给了我们一个赋初值的机会,具体形式如下画红线处所示:

在这里插入图片描述
这样做有两点好处:
1.证明大家是受过专业训练的。
2.编译时,在初值列处定义初值比在构造函数的{ }中定义初值更快,这是因为编译时系统是先调用头文件中的构造函数,如果没有初值列,然后在去cpp文件中找初值的定义,如果有初值列则直接就找到了初值定义,速度更快。

参考资源链接:[侯捷C++课程PPT与代码资源下载](https://wenku.youkuaiyun.com/doc/88p7rbg1mc?utm_source=wenku_answer2doc_content) 侯捷C++课程的PPT和代码示例是套深入浅出的教学资源,非常适合学习C++面向对象编程。为了充分利用这些资源,我建议采取以下步骤进行学习: 1. 理论学习:首先,通过阅读PPT中的内容,对面向对象编程的四个核心概念:封装、继承、多态和抽象有个全面的了解。侯捷的PPT通常会以图文并茂的方式,详细解释这些概念及其在C++中的实现。 2. 代码实践:学习理论知识后,通过阅读与PPT对应的代码示例,理解如何在实际编程中应用面向对象的原则。侯捷的代码示例往往会涵盖各种典型场景,帮助学习者从实践中掌握OOP的设计和应用。 3. 编写代码:在理解了面向对象编程的基础和实践后,自己动手编写代码。可以尝试扩展或修改课程中的示例,以加深对概念的理解,并提高编程技能。 4. 问题解决:在编程过程中遇到问题,可以结合PPT中的理论知识和代码示例,寻找问题的解决方案。这样不仅能够解决实际问题,还能更好地理解面向对象编程的精髓。 5. 反复练习:面向对象编程个需要不断实践才能熟练掌握的技能。通过多次的编写、测试和调试代码,可以逐渐提高自己解决复杂问题的能力。 通过以上步骤,你可以系统地学习并实践C++面向对象编程侯捷的《侯捷C++课程PPT与代码资源下载》资源是个很好的起点,它将帮助你在学习C++的道路上取得坚实的进步。 参考资源链接:[侯捷C++课程PPT与代码资源下载](https://wenku.youkuaiyun.com/doc/88p7rbg1mc?utm_source=wenku_answer2doc_content)
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值