QT学习C++(2)

本文详细介绍了C++中的std命名空间,包括cout和endl的使用。探讨了C与C++在结构体、成员函数以及bool类型的差异。重点解析了const在C++中的作用,区分了全局const和局部const的内存位置和可修改性,并与宏进行了对比,指出const在某些情况下可以替代#define。同时,指出了const在不同文件间的可见性和作用范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

std详解

(cout和endl都属于std)

C++是强语法的,所有变量和函数必须有类型

对结构体

在c中,引用结构体必须加struct

在C++中可以忽略

 c中结构体只能定义变量不能定义成员函数,C++中可以

在c中

在C++中

 调用

 C++新增bool类型(1字节):true(1值)和false(0值),非0值会自动转化为true(1值)

三目运算符

a>b?a:b(a>b?大于选a,不大于选b)

在c的返回值不能被赋值,返回值是数值,a>b?a:b=100是错误的

 在C++中可以被赋值,返回值是变量本身

Const

在c中

 例:在fun.c创建const

 在其他文件使用需要先申明

 const修饰变量名,变量名为只读,用户不能通过变量名进行修改赋值(num=10,错误),但可通过地址修改(注:局部的const才适用)

 总结:const修饰全局变量,变量名只读,内存空间在文字常量区(只读),不能通过地址修改内容(例:num)。const修饰局部变量,内存空间在栈区,可以通过地址修改(例:data)。(为外部连接)

在C++中

在fun.c中定义const intnum=100;extern申明后不识别num

 在C++中出现在所有函数之外的const作用于当前文件(对其他文件不可见,默认为内部连接)

 extern 转化为外部连接

 

 

 C++中,对于基础类型,系统不会给data开辟空间,放入符号表中

 取地址时会分配空间。此外,当以变量形式直接初始化const修饰的变量时,系统会直接开辟空间,不产生符号表

 

 

 对于自定义数据类型(结构体,对象),会分配空间

 

总结:

  • const int data=10;\\data先放入符号表
  • 对data取地址,系统会为data分配空间
  • const int a=b;\\b是变量名,系统直接给a开辟空间,而不放入符号表
  • const修饰自定义数据,系统为自定义数据开辟空间

可以用Const替换#define

宏作用于是整个文件,const视定义情况而定

 

 宏不能作为命名空间的成员,const可以

 

注:本文档仅学习总结

QT学习C++(1)_爱吃糖葫芦的大熊的博客-CSDN博客

QT学习C++(3)_爱吃糖葫芦的大熊的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值