2-4小时突击C++(1)
C++进一步扩充和完善了C语言,是一种面向对象的程序设计语言。任何合法的C程序都是合法的C++程序,因此不在此赘述C++与C相类似的内容,因此本章节主要是介绍C语言没有而C++有的内容。
C++完全支持面向对象的程序设计,包括面向对象开发的四大特性:
- 封装: 是将数据和方法组合在一起,对外部隐藏实现细节,只公开对外提供的接口。这样可以提高安全性、可靠性和灵活性。
- 继承: 是从已有类中派生出新类,新类具有已有类的属性和方法,并且可以扩展或修改这些属性和方法。这样可以提高代码的复用性和可扩展性。
- 多态: 是指同一种操作作用于不同的对象,可以有不同的解释和实现。它可以通过接口或继承实现,可以提高代码的灵活性和可读性。
- 抽象: 是从具体的实例中提取共同的特征,形成抽象类或接口,以便于代码的复用和扩展。抽象类和接口可以让程序员专注于高层次的设计和业务逻辑,而不必关注底层的实现细节。
标准的C++由三个重要部分组成:
- 核心语言,提供了所有构件块,包括变量、数据类型和常量,等等。
- C++标准库,提供了大量的函数,用于操作文件、字符串等。
- 标准模板库(STL),提供了大量的方法,用于操作数据结构等。
引用
引用很容易与指针混淆,它们之间有三个主要的不同:
- 不存在空引用。引用必须连接到一块合法的内存。
- 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
- 引用必须在创建时被初始化。指针可以在任何时间被初始化。
例子:
#include <iostream> using namespace std; int main () { // 声明简单的变量 int i; double d; // 声明引用变量 int& r = i; double& s = d; i = 5; cout << "Value of i : " << i << endl; cout << "Value of i reference : " << r << endl; d = 11.7; cout << "Value of d : " << d << endl; cout << "Value of d reference : " << s << endl; return 0; }
在这些声明中,& 读作引用。
输出结果:
Value of i : 5
Value of i reference : 5
Value of d : 11.7
Value of d reference : 11.7
基本的输入输出
I/O 库头文件
<iostream>
该文件定义了和对象,分别对应于标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。
标准输出流(cout)
cout是与流插入运算符 << 结合使用的,例子:
#include <iostream> using namespace std; int main( ) { char str[] = "xXJXx C++"; cout << "Value of str is : " << str << endl; }
结果:
Value of str is : xXJXx C++
C++ 编译器根据要输出变量的数据类型,选择合适的流插入运算符来显示值。<< 运算符被重载来输出内置类型(整型、浮点型、double 型、字符串和指针)的数据项。因此不需像C语言那种格式化输出,例如%d, %f, %s等等。
标准输入流(cin)
cin 是与流提取运算符 >> 结合使用的,例子:
#include <iostream> using namespace std; int main( ) { char name[50]; cout << "请输入您的名称: "; cin >> name; cout << "您的名称是: " << name << endl; }
结果:
请输入您的名称: xXJXx
您的名称是:xXJXx
C++ 编译器根据要输入值的数据类型,选择合适的流提取运算符来提取值,并把它存储在给定的变量中。
流提取运算符 >> 在一个语句中可以多次使用,如果要求输入多个数据,可以使用如下语句:
cin >> name >> age;
相当于:
cin >> name;
cin >> age;
命名空间
命名空间可作为附加信息来区分不同库中相同名称的函数、类、变量等。
一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名。
定义命名空间:
namespace namespace_name {
//代码声明
}
调用带有命名空间的函数或变量:
name::code; // code 可以是变量或函数
例子:
#include <iostream> using namespace std; // 第一个命名空间 namespace first_space{ void func(){ cout << "Inside first_space" << endl; } } // 第二个命名空间 namespace second_space{ void func(){ cout << "Inside second_space" << endl; } } int main () { // 调用第一个命名空间中的函数 first_space::func(); // 调用第二个命名空间中的函数 second_space::func(); return 0; }
相同的函数命名为func()。
输出结果:
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏主要是介绍嵌入式软件开发岗位的相关知识和学习攻略,为大家提供一份笔试与面试手册。包括有嵌入式软件开发岗位介绍与学习攻略;校园招聘和offer疑惑问题的介绍;在笔试方面,如何刷题为笔试作准备,提供往年笔试真题;在面试方面,提供相关知识的复习重点,提供面试真题。包括有:华为、蔚来、文远、大疆、三一、深信服、亚马逊、Intel、百度、科大讯飞、OPPO、京东、中兴、比特大陆|算能、美团等等