[C++]语言基础

【摘要】 指针字面值:nullptr。C语言中有预定义的NULL,其实就是个0。C++中也有NULL(书中介绍NULL的定义在<cstdlib>中,但是没有找到,而且不包含它也可以使用NULL),但是不建议使用,最好使用nullptr。bool类型的字面值只有true和false。C语言是没有布尔类型的,所谓的“布尔类型”其实是整型,就是1相当于true,0相当于false。变量初始化C++中的初始化…

指针字面值:nullptr。C语言中有预定义的NULL,其实就是个0。C++中也有NULL(书中介绍NULL的定义在<cstdlib>中,但是没有找到,而且不包含它也可以使用NULL),但是不建议使用,最好使用nullptr。

bool类型的字面值只有true和false。C语言是没有布尔类型的,所谓的“布尔类型”其实是整型,就是1相当于true,0相当于false。
变量初始化

C++中的初始化异常复杂,且初始化和赋值是两个完全不同的操作。下面是对一个int类型的变量赋值的几种方式:

int v1(1024); // direct-initialization, functional form
int v2{1024}; // direct-initialization, list initializer form
int v3 = 1024; // copy-initialization
int v4 = {1024}; // copy-initialization, list initializer form

这四种方式都是对变量的初始化。其中有“{}”的被称为列表初始化。使用“=”的是拷贝初始化,而使用“()”或者“{}”的是直接初始化。具体两者有什么差别,目前还不知道。

如果定义变量时没有指定初值,则变量被默认初始化。如果是内置类型的变量未显式初始化,它的值由定义的位置决定,定义于任何函数体之外的变量被初始化为0,在函数体内部的内置类型变量将不被初始化(类定义体内也一样)。每个类各自决定其初始化对象的方式。但是实际测试似乎也会被初始化为0:

void func1(void)
{
int a;
double b;
cout << a << endl;
cout << b << endl;
}

class A {
public:
int a;
};

void func2()
{
A a;
cout << a.a << endl;
}

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享