PoEdu - C++阶段班- Lesson02_C to C++



1  原生bool类型

c++里面的bool类型才是真正原生的true和faul,比如常见的大写的“BOOL”,它就不是原生的。

原生的与非原生的bool,它们的区别:

详细说下原生bool与非原生bool之间的差别:

_Bool 这个是c98之后加上的bool类型,和我们原生bool等同。

C++中,建议一直使用原生bool,它是最安全的类型。

补充一点:宏定义一个int类型的bool,之所以这么做,是因为0是false,1是true,在C++中,这种比对是有风险的,可以说是不正确的。



2 头文件的三种标准

在vs2015上默认建立一个项目,VS2015帮我们生成4个文件:

stdafx.h这个是微软给我们的一个大坑。

有可能会导致一个问题:预编译头会导致平台不兼容。

文件后缀cpp和c,编译器会选择不同的编译方式编译。

在以DomainOperatorDemo这个解决方案命名的工程中,生成的DomainOperatorDemo.cpp,有程序员直接改名为main.cpp。告诉别人main方法在这里。

在stdafx.h中,默认包含了3个头文件。我们可以直接在main函数中使用printf()。

其中还包含了tchar.h,这是微软给我们的一个坑,它是windows特定的头文件,它前面有个t,带有很强的平台特性。不要过于依赖这个头文件。

以c++中,stdio.h和cstdio功能一样。

3 补充预编译头:提问stdafx.cpp具体的作用是什么呢?

  可以理解为微软的VC特有的文件,实际上我们可以完全的没有它,直接创建空项目。是给编译器用的,并不是我们所需要的。预编译头,想是给我们一定的便利,但并没有什么卵用。



4  域运算符  

它的作用主要就是来解决一件事:

看示例:

变量不是最终的本质,本质是内存里的表述数据。

作用域访问符::

变量的覆盖原则:就近访问。谁最近,我就去找它。

命名空间与作用域:

  在C语言中,我们了解到,变量的生命周期和作用域,就是看这个变量放在哪,外部的、全局的、局部的,局部的局部的等,在C中对变量的作用域控制力是很弱的。

  所以在C++中,特意加入了一个权限概念:命名空间,加强了作用域的控制。除了全局空间,栈空间,又多了一个自已定义的命名空间。

当域作用符前面为空的时候,表示为全局空间,域作用符前面有名称的,就是命名空间

std是个什么样子的命名空间?看图:

如何自定义一个命名空间:

自定义命名空间除了解决变量重定义的问题,它还有其它的作用吗?答案是有的:工业编程里面,大的项目是很多程序员合作的结果,当另一个伙伴想要访问你一个同名的变量时,命名空间就能很好的分隔区分它们。



5  new&delete    运算符

  前面讲到了全局,讲到了栈,现在说说“堆”:

c中我们学到2个操作函数是 malloc()  和  free()。C++中间添加了new 和 delete ;

#include <iostream>

int main()
{
    int *pNum = new int(100);
    std::cout << *pNum;

    return 0;
}

运行:100

在C语言中maloc()一定和free()对应使用,那么C++中也是:new一定对应delete使用。

#include <iostream>

int main()
{
    int *pNum = new int(100);
    std::cout << *pNum;
    delete pNum;
    return 0;
}

运行:100

再看:如果new一个数组呢,怎么释放?

#include <iostream>

int main()
{
    int *pNum = new int(100);
    std::cout << *pNum;

    int *pArray = new int[10];

    delete pNum;
    delete[] pArray;
return 0;
}

运行:100

注意:new  和  delete  是运算符,它们不是函数。重要的说三遍!老师就在课堂里强调了三次。



PoEdu - C++阶段班- Lesson02_C to C++

时间: 2024-10-12 08:59:43

PoEdu - C++阶段班- Lesson02_C to C++的相关文章

PoEdu - C++阶段班【Po学校】- 第3天

引用                           类与对象             - C++阶段班[Po学校]- 第36节 - C++阶段班[Po学校]- 第36节 - C++阶段班[Po学校]- 第36节       - C++阶段班[Po学校]- 第36节

PoEdu - Windows阶段班 【Po学校】Lesson006_线程_线程的启动到消亡 &amp;线程状态 &amp; 线程安全 &amp; CONTEXT结构体 &amp; 令牌锁

011_线程启动到死亡的详细讲解 1. 线程内核对象 使用计数 2 ##决定当前线程何时销毁 暂停计数 1 ##UINT类型初始为1,可以暂停多次,如置为0则取消暂停. 退出代码 STILL_ACTIVE Signaled FALSE CONTEXT 为空 2. 栈##在隶属于当前进程的空间中,分配一块"栈"空间,以供线程使用 参数 lpParam 入口地址 lpfnAddr 3. CONTEXT##线程上一次运行时的寄存器 IP(指令寄存器) void RtlUserThreadSt

PoEdu - Windows阶段班 【Po学校】Windows编程 Lesson004_003-2 文件操作

001_函数的不同版本 HANDLE : CreateFile()函数返回一个内核对象的句柄 WINAPI : 一种调用约定,调用方式. _In_ 与 _In_opt_ : 本身没有意义,一个说明宏,来标明这个参数的性质. _In_ 说明此参数是"输入型"参数 _In_Opt_ 说明此参数是"输入指针型"参数 _Out_ 说明此参数是"输出型"参数 输出参数要保障:输出型参数,具有可操作的空间 VS2015中,CreateFile()是一个宏:W

PoEduo - C++阶段班【Po学校】-继承&amp;虚函数&amp;抽象&amp;接口- 课堂笔记

附录(一) 扩展知识:  1--> 面向对象的三个基本特征   1.0 封装:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private,protected,public) 1.1 继承:广义的继承有三种实现形式:实现继承(指使用基类的属性和方法而无需额外编码的能力).可视继承(子窗体使用父窗体的外观和实现代码).接口继承(仅使用属性和方法,实现滞后到子类实现).前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式. 1.3 多态:是将

PoEduo - C++阶段班【Po学校】-07static与const与类的化学变化- 课堂笔记

1-->static与类 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; class AA { public: AA(int a, int b) { m_a = a; m_b = b; } int getC() { m_c++; return m_c; } //静态的成员方法 static int& getCC() { return m_c; } private: //static修

【学神-RHEL7】-1511班12月6号阶段小测试题目

注意事项: 1.本次主要考核内容:文件管理-vim使用方法-用户组管理. 2.考试目的:  强化近期学习内容3.考试时间:30分钟4.考试过程中,禁止删除他人文件,偷看他人内容 5.评分标准: 先比正确率,再比速度.并在任务分发群留言:"我已经做完".没有退出ssh远程,不算你已经做完. 6.评分流程: 交换判卷方式: 以上课YY姓名排名为准.排名第一人判阅第二人的考卷.以此类推,最后一名判阅排名第一人的考卷 当监考老师,宣布判卷开始后,所有人以root身份登录,开始判卷. 做错一处扣

【2017下集美大学软工1412班_助教博客】团队作业7——第二次项目冲刺(Beta阶段)成绩公示

作业要求 团队作业7 团队评分结果 Beta计划 Total GN SX GJ LC AP WT PHILOSOPHER 3 1 0 1.5 0 0.5 0 三人行 3.5 1 1 1 0 0.5 0 音乐播放器 0 0 0 0 0 0 0 博客管理系统 3.5 1 0 1.5 0 1 0 Beta冲刺日志 Total NR JG LG QR RJ Photo TH HD PHILOSOPHER-day1 3.5 1 0 1 0 1 0 0.5 0 PHILOSOPHER-day2 3.5 1

乌班图的世界——ubuntu18.04设置静态ip阶段总结

系统环境:ubuntu18.04 LTS工具:SecureCRT 6.2.0 (build 195) .virtualbox5.2.18 r124319(Qt5.6.2)--------------------------------------------------------------------这段时间断断续续在乌班图谜一样的世界打转转,为了能从SecureCRT连到虚拟机virtualbox,设置静态IP先从"sudo vi /etc/network/interfaces"

IFE 百度前端技术学院 2016年春季班作业 第一阶段任务(1-4)的总结

具体任务详细介绍可参考http://ife.baidu.com/task/all 具体代码参考:https://github.com/sunshineqt/webxt/tree/master/stage1 遇见的问题及解决: 任务1: 1 中文乱码 在<head></head>标签内加上<meta charset=”utf-8”>. 2 表单中method属性值 post和get两个属性值,一般选用post,安全性高.get是从服务器上获取数据:post是向服务器传送数