1.C++基础(C、C++)
1.命名空间
所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定
义于一个名为std的namespace中。
命名空间std封装的是标准程序库的名称,标准程序库为了和以前的头文件区别,一般不加".h"。
标准C++引入了关键字namespace(命名空间/名字空间/名称空间/名域),可以更好地控制标识符的作用域。
2.总结
1) 当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这
样才能正确使用cout。若不引入using namespace std ,需要这样做。std::cout。
2) c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。
3) C++命名空间的定义: namespace name { … }
4) using namespace NameSpaceA;
5) namespce定义可嵌套。
3.C++三⽬运算符功能增强
1)C语言返回变量的值 C++语言是返回变量本身C语言中的三目运算符返回的是变量值,不
能作为左值使用 C++中的三目运算符可直接返回变量本身,因此可以出现在程序的任何地方 。
2)注意:三目运算符可能返回的值中如果有一个是常量值,则不能作为左值
使用 (a < b ? 1 : b )= 30;
4.新增bool类型关键字
C++在C语⾔的基本类型系统之上增加了bool;
C++中的bool可取的值只有true和false理论上bool只占⽤⼀个字节,
如果多个bool变量定义在⼀起,可能会各占⼀个bit,这取决于编译器的实现
true代表真值,编译器内部⽤1来表⽰;
false代表⾮真值,编译器内部⽤0来表⽰。
5. const增强
#include <iostream> int main(void) { //const 定义常量---> const 意味只读 const int a; int const b; //第⼀个第⼆个意思⼀样 代表⼀个常整形数 const int *c; //第三个 c是⼀个指向常整形数的指针(所指向的内存数据不能被修改,但是本⾝可以修改) int * const d; //第四个 d 常指针(指针变量不能被修改,但是它所指向内存空间可以被修改) const int * const e ; //第五个 e⼀个指向常整形的常指针(指针和它所指向的内存空间,均不能被修改) return 0; }
C++中的const修饰的,是一个真正的常量,而不是C中变量(只读)。在const修饰的常量编译期间,就已经确定下来了
(1).C语言中的const变量
C语言中const变量是只读变量,有自己的存储空间
(2).C++中的const常量
可能分配存储空间,也可能不分配存储空间
当const常量为全局,并且需要在其它文件中使用,会分配存储空间
当使用&操作符,取const常量的地址时,会分配存储空间
当const int &a = 10; const修饰引用时,也会分配存储空间
(3).修改const修饰的常量值(在C++中)
在C语言中,const变量只不过是修饰该变量名,它并不能使内存变为只读。也就是说,
我们不能通过变量名再去操作这块内存。但是可以通过其它方法,如指针,通过指针
是可以修改被const修饰的那块内存的。
void test() { const int a = 10; //修饰一个变量只读 char *p = NULL; *p = &a; //想要修改一个常量的值,编译器先开辟一个临时变量空间 *p = 20; //修改时,改变的是临时变量的值,并不是const int a的值 cout<<"a = %d"<<a<<endl; cout<<"*p = %d"<<*p<<endl; }
6.枚举
c 语言中枚举本质就是整型,枚举变量可以用任意整型赋值。而 c++中枚举
变量, 只能用被枚举出来的元素初始化。
#include<iostream> using namespace std; enum season { SPR, SUM, AUT, WIN }; int main() { enum season s = SPR; //s = 0; //error,但是C语⾔可以通过 s = SUM; cout<<"s= "<< s<<endl;//1 return 0; }