QT学习C++(2)

  • Post author:
  • Post category:其他


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博客



版权声明:本文为dhdhhy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。