栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++基础内容

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++基础内容

为什么要给常量初始化?

在编译期将常量的值直接写入到常量的使用点
常量的初始化必须使用常量,如果使用变量就会退化成常变量

常量会占内存

指针和数组名的区别------什么是指针

数组名---地址---常量---39323987
指针---变量

const修饰额内容不能作为左值
不能泄漏常量的地址给非常量的指针

const修饰的类型是离他最近的第一个成型的类型,
其余的是他修饰的内容

如果const修饰的内容不包含指针,则无法参与类型

int* p1 = &a;
    const int* p2 = &a;
    int const* p3 = &a;
    int* const p4 = &a;

int* q1 = &a;
    const int* q2 = &a;
    int const* q3 = &a;
    int* const q4 = &a;             

const修饰的内容不能作为左值;const修饰离他最近的第一个成型的类型,类型以外的就是修饰的内容        

p1=q1                 p2=q1               p3=q1             p4=q1 

p1=q2                p2=q2                p3=q2             p4=q2 

p1=q3                p2=q3                p3=q3             p4=q3 

p1=q4                p2=q4                p3=q4             p4=q4 

p1=q2;会泄露常量地址给非常量指针。

不能泄露常量地址给非常量指针

如果const修饰的内容不包含指针,则无法参与类型

引用

引用的底层是一个指针
在使用到引用的地方,编译期会自动替换成底层指针的解引用

引用为什么必须初始化?

引用在编译器会自动替换成底层指针的解引用,初始化以后再也无法改变底层指针的指向
//引用为什么一旦初始化就无法改变引用的方向?

 不能用非常量的指针去引用一个常量

        当引用一个不可以取地址的量的时候,使用常引用
        会生成一个临时量
       引用临时量

       临时量都有常属性

* 编译链接过程
* 函数调用过程

面向对象
运算符重载
模板
继承与多态
STL  容器  泛型算法  函数对象
智能指针


函数的区别(c和c++)

//函数默认值参数

在函数声明或定义的时候,给定参数默认值,如果实参传递的时候,不给该形参传值,
否则会按默认值传参

函数参数的默认值是在编译期生成指令的时候直接生成入参指令
函数参数的默认值只能传递常量
函数的默认值参数只能从右向左依次赋值,不能跳过

默认值参数在同一作用域只能赋值一次,不能重复赋值。

因为函数参数的默认值是在编译期代入的,所以函数参数的默认值只在本文件生效

内联函数

在realse版本(发行),在调用内联函数的时候,该函数会在调试点展开——编译时期展开
在debug版本(调试),内联函数和正常函数调用方式一致

由于内联函数在编译期展开,在编译期无法获取变量的值,而递归函数的终止条件一定需要变量参与,
所以递归函数不可能被处理成内联函数

inline只是对系统的建议,建议将该函数处理为内联。

inline函数在debug版本生成的是local符号,如果处理为内联之后在release版本不生成符号,
直接在调用点展开

符号:所有的数据都会生成符号,指令中只有函数名会生成符号
全局符号:global符号      所有的文件只要引用声明就可以使用
局部符号:local符号       只有本文件可见


数据
指令

*******宏函数
 预编译时期在调用点展开
无法调试
没有类型安全校验
没有栈帧开辟
单文件可见
不生成符号

******static函数
不展开
可以调试
有类型安全校验
有栈帧开辟
单文件可见
local符号

*******内联函数
debug不展开,release在调用点展开
可以调试
有类型安全校验
debug有栈帧开辟,release没有栈帧开辟
单文件可见
debug生成local,release不生成

******普通函数
不展开
可以调试
有类型安全校验
有栈帧开辟
多文件可见
生成符号

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1034083.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号