C++|C++学习日记 Day2

C++|C++学习日记 Day2

文章图片

C++|C++学习日记 Day2

文章图片

C++|C++学习日记 Day2

C++书写hello world首先可能要告别 #include <xxx.h>格式的头文件了
包含头文件 #include <iostream>标准输入输出头文件;

【C++|C++学习日记 Day2】C++语言编程面向对象三大特性:封装、继承、多态(我继承懂一点 , 多态现在完全不懂 , 很期待);
双冒号作用域运算符 ::::如果前面没有任何作用域 , 代表了使用全局作用域
例如上图可以去掉第二局 , 把第5句替换为:
std::cout << "hello world." << endl;
个人理解std就像个百货超市 , 只要它有的你想用有两个办法:
1  using namespace std;
2  std : : 要用的东西;(比如  std::cout)
namespace 命名空间用途:解决命名冲突;
如果有两个同名函数 , 使用namespace可以告诉编译器你想调用那个函数 , 避免冲突(下图中定义了两个Study()函数 , 在C语言中是不可行的 , 但在C++中通过namespace可以解决);


命名空间下可以存放 变量、函数、结构体、类...
好像C++里面有的都能放进去
命名空间 只能存放在全局作用域下
不能放在函数里

命名空间可以嵌套命名空间
有点像递归??

命名空间是开放的 , 可以随时添加新成员
命名空间是可以匿名的(就像这样)
匿名的话好像就不能修改了


命名空间可以起别名
给人起外号必然是:  typedef

using 声明和 using编译指令using 声明
using namespace::sunwukongid;
如果出现就近原则 , 要避免两个原则同时出现;
using 编译指令
using namespace::kingGlory;
如果出现就近原则 , 优先使用就近原则
如果有多个“房间”打开 , 并且存在同名的变量 , 使用时候需要加作用域区分
在命名空间和函数里出现了同名变量 , 编译器会采取就近原则(下图输出:15 , 而不是namespace C 中的值)

C++对C语言的增强全局变量检测增强
函数检测增强
必须 声明函数返回值
形参类型 检测
返回值 检测增强
调用函数时参数传递个数 检测
类型检测增强 malloc 返回值为void C++中必须强转
struct 增强
C++的结构体中可以放函数
使用时C++可以省去struct
bool类型增强
C++才有bool类型
sizeof(bool)  为1字节
true  1 代表真  false  0  代表假
三目运算符
C语言中  返回值   a>b?a:b;  返回a或者b的值
C++中返回的是变量   a>b?a:b;  返回变量a或者b
const增强
C语言下:
全局const语法可以通过 , 运行报错
局部const语法通过 , 运行成功
C++下:
全局const语法可以通过 , 运行报错
局部const语法通过 , 运行修改不成功 , 因为变量放在符号表中
const在C语言中默认是外部链接属性 , 在C++中默认是内部连接属性
const分配内存情况
对于变量 取地址
在变量前加关键字 extern
使用变量 来初始化 const修饰的变量
对于自定义的数据类型 , 也会分配内存
引用用途 给内存起别名
给变量起别名(如下图)

语法  type &别名 = 原名
引用必须要初始化
一旦初始化后 , 就不能修改指向
建立对数组的引用
参数的传递方式值传递
不可以修改本体
地址传递
可以修改本体
引用传递
可以修改本体
注意事项不要返回局部变量的引用
如果函数的返回值是引用 , 那么这个函数调用可以作为左值进行赋值运算
引用的本质就是一个指针常量 , 所以引用必须初始化 , 且初始化后不可以修改指向
指针的引用通过引用技术 , 可以简化指针
常量的引用使用场景:修饰函数的形参 , 防止误操作


    推荐阅读