第二节 C/C++简述
2.1 第一个C++程序
#include // 系统输入输出流头文件,也可以写成“#include ”,类似于#include 。
// 注意:系统头文件可以不带“.h”,但是引入自己的头文件不可以省略。
using namespace std; // std:标准,该句代码表示使用标准命名空间
// 主函数
int main()
{
cout << "Hello World! 你好中国!" << endl; // endl类似于C语言中的换行符“\n”。
// cout代表的是输出设备,类似于C语言中的printf;<< 表示该内容指向(流向)输出设备,在endl后面一样可以拼接;
// cin代表的是输入设备,类似于C语言中的scanf;比如:
int num = 0;
cin >> num; // 将键盘输入的数据赋值给num
cout << "num = " << num << endl;
return 0;
}
/**********************************************************************************************************
* C和C++的对比:
* 1. C语言是面向过程的语言:其核心思想是功能分解,自顶向下,逐层细化,程序=数据结构+算法;
* 数据结构:表示对数据的存储方式,即数据类型(int long short char string float struct array 链表等);
* 算法:就是对存储号的数据进行分析的步骤,即功能函数。
* 2. C++是面向对象的语言:其核心思想是功能模块化(类的封装和继承),即每个模块只提供一种特定的功能,各模块之间相互独立,
* 该方法增加了代码的复用率,有利于软件的开发、维护和升级。对象=数据结构+算法=对象+对象+对象+……
**********************************************************************************************************/
2.2 C++的三大特性
-
封装:
指把客观的事物封装成抽象的类,且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行数据信息隐藏。类将成员变量和成员函数封装在类的内部,根据需要设置访问权限,通过成员函数管理内部状态。 -
继承:
指类之间的相互关系,继承的作用是子类拥有父类的特征和能力,避免公共代码的重复开发,减少代码和数据冗余。 -
多态:
指“一个接口,多种方法”,即多种形态,程序在运行的过程中才决定调用的函数,它是面向对象的核心概念。
2.3 C++是C语言的扩展
#include // 系统输入输出流头文件,也可以写成“#include ”,类似于#include 。
// 注意:系统头文件可以不带“.h”,但是引入自己的头文件不可以省略。
using namespace std; // std:标准,该句代码表示使用标准命名空间
/****************************************************************************************************
* 1.全局变量的定义与使用:
* ① “::”表示作用域运算符(C++独有,C没有);
****************************************************************************************************/
int a = 30; // 全局变量
void test01()
{
int a = 40; // 局部变量
cout<<"局部变量a="<b?a:b,在C语言中返回的是数值(即变量的值),而在C++中返回的是变量本身(引用)。
* 9.C++中的const:
* ① 字面意思,常数,不变的数值,它是一个限定符,用来限定一个变量不允许改变,将一个对象转换成一个常量;
* ② C++中用const修饰的常量是内部链接常量,即只在本文件中起作用,外部文件不可见(可使用external修饰,用于外部使
* 用),而C中为外部链接,可外部使用;
* ③ C++中const表示常量,不需要分配内存长度,而C中表示只读变量,需要分配内存长度;
* ④ C++中全局const,当声明extern或者对变量进行取地址时,编译器会为其分配内存空间,变量存储在只读数据段,否则不
* 开辟内存空间,内存中的数据不可修改;
* ⑤ 当以变量的形式初始化const修饰的变量时,系统也会为其分配内存空间,如“const int a=b;”,系统直接为a开辟空间
* 而不创建符号表中;
* ⑥ 对于自定义数据类型,如类对象,也会分配内存空间,如:const Person person;
* ⑦ 尽量用const替换宏(#define)。
* 10.C中的const:
* ① const修饰的全局变量,变量名只读,内存空间在文学常量区(只读),不可修改;
* ② const修饰的局部变量,变量名只读,内存分配在栈区(可读写),可通过寻访变量地址来简介修改空间内容;
****************************************************************************************************/
void test05()
{
cout << sizeof (false) << endl; // 输出结果为1,表示bool类型占一个字节大小
bool flag = true; // C语言中没有这种类型
flag = 100; // 给bool类型赋值时,非0值会自动转换成true(1),0值直接转换成false(0)
cout << flag << endl; // 输出结果为1
// C++中的const
const int constA = 10; // 给常量赋值,变量名和值存于符号常量表,此时还没有开辟内存空间
cout << "constA:" << constA << endl; // 输出结果为10,输出符号表中的值
int* p = (int*)&constA; // 寻访变量constA的地址,此时给constA开辟内存空间,并将constA=10存储在开辟的内存空间中
*p = 300; // 并修改constA地址中的值
cout << "*p:" << *p << endl; // 输出结果为300,表示修改成功
cout << "constA:" << constA << endl; // 输出结果仍为10,输出的是符号表中的值,但地址中的值已经被修改。
cout << "*&constA:" << &constA << endl; // 输出结果为:0x61feb8,存储地址
cout << "*p:" << *&p << endl; // 输出结果为:0x61feb8,存储地址
const Student stu = {"Han", 27};
cout << "stu.Name: " << stu.mName << endl << "stu.Age: " << stu.mAge << endl;
}
// 主函数
int main()
{
/*************************************************************************************************
cout << "Hello World! 你好中国!" << endl; // endl类似于C语言中的换行符“\n”。
// cout代表的是输出设备,类似于C语言中的printf;<< 表示该内容指向(流向)输出设备,在endl后面一样可以拼接;
// cin代表的是输入设备,类似于C语言中的scanf;比如:
int num = 0;
cin >> num; // 将键盘输入的数据赋值给num
cout << "num = " << num << endl;
**************************************************************************************************/
// test01();
// test02();
// test03();
// test04();
test05();
return 0;
}