学习C++个人总结

本文总结了C++与C语言的区别,包括内联、引用、结构体的不同、bool值、默认参数、多态以及this指针等关键特性。C++的内联函数提供空间换效率,引用作为变量的别名,结构体中可以包含函数,面向对象编程引入了类方法和this指针。此外,还讨论了函数参数的值传递、引用和多态的实现。

C++和C语言的不同

1.有内联 c++  inline        c有宏      宏是全局搜索替换  内联是简写函数原型处及是定义 不会跳到函数地址执行就在inline处或者加载到那行执行 用空间换效率  什么样的函数适合内联  ?

只有一行代码的小型、非递归型函数适合

函数定义写在 类声明中的函数自动成为内联   

2.引用 &   c++有引用 定义必须初始化变量 一个变量的别名  int const* name(c语言版本)   int& name(c++)

3.struct结构 在c语言中定义声明都需要struct  c++中只需要struct定义一次 后面就typeName 的时候完全不需要加struct

而且c++的结构中可以有函数    结构默认是公开的public   类默认是private

4.c++有bool值  c++是面向对象编程  不是面向过程 所以有类方法 每一个对象调用方法其实就是把自己的地址传进去 

因为你sizeof 类的时候或者结构 占用的地址只是属性的总和 所以根本没有公共方法 在c语言中实现就是方法中接收一个类型指针  谁调用把自己传进去 所以谁调用显示谁的信息  

5.c++默认都是值传递 所以在函数调用的时候 为了简写 类和结构的调用 出现了&引用 

将引用参数 声明为常量的引用理由:(const typeName &)

(1)、可以避免对数据造成修改(2)、能够接受const和非const实参(3)、能够正确生成并使用临时变量

如果对象为基本数据类型 一般用值类型   如果为结构或者类推荐用引用这样节省了拷贝的时间跟空间

6.二级指针其实就是指针的数组  int *a 指针 int a[4]    int的数组   a[4] 说明有4个int数据的数组 可以用int* 代表指向数组地址 也就是数组0的地址首地址  所以int* a[4] 里面的a[4]说明有4个int*数组的数组  简写就是int* *a

7.函数有默认参数 定义的时候在原型声明即可 定义的时候照常 比如原型void 方法名(int n=1)

默认的放在右面写 不允许在中间 有几个都考右手    只有原型包含默认信息

8. c++ 有new和delete  C有maxxxx

9.函数新增了多态(形参数量种类顺序不同)

不能有二义性 比如(double x) (double& )   传递实参的时候都是一个变量 编译器这就挂了 

int *可以代表数组 那么在声明参数的时候最好数组是int []声明 思想解放 等价指针

10、左值 右值左值引用& 右值引用&&   

右值引用是用来支持转移语义的。转移语义可以将资源 ( 堆,系统对象等 ) 从一个对象转移到另一个对象,这样能够减少不必要的临时对象的创建、拷贝以及销毁,能够大幅度提高 C++ 应用程序的性能。临时对象的维护 ( 创建和销毁 ) 对性能有严重影响。
11、c++实现了函数模板 泛型 

template<class AnyType>
void Swap(AnyType &a, AnyType &b)
{
	AnyType c = a;
	a = b;
	b = c;
};

常见将模板放在头文件中,需要使用的包含头文件即可   允许你重载

具体化(优先于模板):等于重载了特定类型的函数定义和原型声明

template<> void Swap<MyDjj>(MyDjj& a, MyDjj& b)
显示实例化<TypeName>  模板默认是隐示的
template void Swap<int>(int& a,int& b)

12、c++有this指针 面向对象  谁调用this指向谁 把自己传进去 this是内指针 





评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值