C++是一种面向对象的语言,主要学习其类的设计,C语言面向过程,学习编程思想。
编程用来解决问题,描述事件。
C++有封装、继承、多态三种特性,友元破坏了封装,使C++不是纯面向对象语言。
封装:外部不是直接使用
继承:父子
多态:多种形态,实现效果不一样
结构体在C和C++中的区别
异:
1.struct在C中不能为空,C++中可以
2.在C++中空结构体大小为1个字节
3.在C中结构体名就是结构体名,在C++中结构体作为类型名,可以直接定义变量
4.在C中struct里面不能写函数,C++中可以
同:
1.在C++中也需要内存对齐,小的在两边,分别与最大的对齐;小的在一边,小的之和与最大的对齐(倍数关系)
struct和class的异同
同:struct可以实现和class一样的功能
异:struct默认public,class默认private
stdio.h和iostream
stdio.h标准输入输出头文件
1.scanf,printf
以特定格式输出用printf方便
2.gets,puts
3.getchar,putchar
原型:返回值 函数名(格式说明,地址列表)
iostream输入输出流类
istream输入流类 cin对象 >>运算符
ostream输出流类 cout对象 <<运算符
endl结束并换行
using namespace std;
使用命名空间
区分不同“人”写的名字相同的代码
namespace AA
{
int sum = 0;
void sort()
{
cout << "AA:sum" << endl;
}
}
namespace BB
{
int sum = 0;
void sort()
{
cout << "BB:sum" << endl;
}
}
namespace CC
{
int sum = 0;
void sort()
{
cout << "CC:sum" << endl;
}
}
int main()
{
using namespace AA;
sort();
BB::sort();
CC::sort();
}
C++的三种类型
值类型,指针类型,引用类型
引用和指针的异同
1.指针可以不初始化,引用必须初始化
2.指针通常初始化为空,引用不能为空
3.sizeof(指针)为4(x86),sizeof(引用)是实体大小
4.指针可以变对象,引用不行能改变
5.指针可以解引用,引用不能(引用就是实体)
野指针指向垃圾内存
1.声明时候出现(没申空间)
2.free或delete后出现
解引用,从头开始取基类型的字节数
解引用是取出地址(16进制)内的东西转换,不是直接存数据
int main()
{
char str[5] = { 1,1,1,1,1 };//一字节八位,str数组存在内存中为0000000100000001000000010000000100000001
int* p = (int*)str;//p指向str下标位置,数组开头,取0000000100000001000000010000000100000001中四字节(int类型四字节)
printf("%d",*p);//输出00000001000000010000000100000001的十进制
}
函数重载,重载多态
1.函数名相同,同一作用域内
2.参数列表不同
3.和返回值无关,不能光通过返回值确定重载
4.const函数可以区别重载
struct aa
{
void test(){}//1
void test()const{}//2
};//1,2是重载
void test(){}//3
//1,3不是重载,函数名不同aa::test和test
void test(int a){}//4
void test(int a,int b){}//5
//1,2,3是重载