C++基础学习
1、双冒号的使用::,全局变量 。或者命名空间下的作用范围
2、namespace 命名空间 。a,解决命名冲突问题,b,必须在全局作用域下声明,c,命名空间下可以放函数,变量,结构体,类,还可以嵌套命名空间,命名空间是开放的随时可加新内容,合并而不是覆盖,还可以起别名
3、using声明和using编译指令
int sunwukongId=10;//声明
using KingGlory::sunwukongId;
cout<<sunwukongId<<endl;//出错,声明和前面定义同样优先级识别不出
using namespace KingGlory;
using namespace LOL;
后面使用是需注明cout<<LOL::sunwukongId
4、C++对C语言的增强
4.1、对全局变量的检测增强
函数检测增强、传参类型、返回值检测、参数个数
4.2 、类型转换增强 malloc返回void*c中不用强转,C++中必须强转
4.3、struct增强
C++中可以有函数、c中必须加struct关键字
4.4、增加bool数据类型
4.5、三目运算符的增强
c中返回的是值,C++中返回的是变量
5、const增强
C中全局变量是常量,函数内部的const是伪常量,分配有内存,可改变其中的值,不能用来初始化数组
C++中const只能是常量,不分配内存,c++中是符号表key-value,用指针也是临时分配了一个内存存另一个变量tmp,而不改变符号表中的内容
C语言中const是外链接,直接用可以在外部文件中找到,C++默认是内部链接,需要用关键字extern来变得公用
6、const内存问题 (绕过编译器检测进行修改)
6.1 取地址会临时分配内存
6.2extern const 会分配内存
6.3 用普通变量初始化const变量会分配内存
int a=10;
const b=a;
int *p=(int *)&b;
*p=100;
cout<<b<<endl; //输出为100,分配内存的变量都可以通过指针改了
6.4自定义数据类型加const也会分配内存
struct person
{
int mage;
string mname;
};
void test01()
{ const person p1;
p1="aaaaaaaaaaaaaa"//错
person *p=(person *) &p1;
p->mage=18;//P是指针用->
(*p).mname="bbbbbbbbbbbbbbbbbb";//*p是实例用 . (点)
cout<<p1.mage<<p1.mname<<endl;
define 宏定义预处理时就处理了;const 有数据类型,且有作用域
7 引用 type & 新名字=原名字
7.1 必须初始化,且初始化之后不能修改了
int =10;
int &b=a;
b=100;
cout<<a<<endl; //a=100
int c=30;
&b=c; // 错
7.2 对数组的引用
int arry[10];
for循环赋值
int (&Arrary)[10]=arry; //给数组取别名,且初始化为arry
用Arrary把之前的arry输出
typedef int (ARRYREF)[10];//一个有10个元素的int类型的数组
ARRYREF & Arrary2[10]=arry;//类型+别名+初始化
也看了书上大概前四章的东西,以后尽量每天写一些