• 内存分配和释放:C++采用new和delete,C语言采用malloc和free
  • C++iostream库包含了istream和ostreamn来表示输入输出流,一个流就是一个字符序列(字符序列是由一系列字符组成的有序集合。字符可以是字母、数字、标点符号或其他特殊字符。字符序列通常是以字符串的形式表示)代替了C语言中的stdio标准输入输出库
  • C++中的字符串类代替了C语言中的字符数组处理函数(C语言中没有字符串)
  • C++中的try/catch/throw异常处理机制代替了C中setjmp()和longjump()函数
  • C++可以重载(形参类型或则形参个数不相同),C语言不可以
  • C++可以在使用这个变量的之前的任何地方定义这个变量,C语言只能在函数开头定义这个变量
  • C++增添了引用这个类型
  • C++增添了命名空间,C语言没有

命名空间是为了防止名称冲突,命名空间的使用规则如下

  1. 命名空间只能定义在全局范围内
  2. 命名空间可以嵌套
  3. 命名空间可以随时将新成员加入已有的空间
 1 namespace A {
 2     int a = 100;
 3     int b = 200;
 4 }
 5 //将c添加到已有的命名空间A中
 6 namespace A {
 7     int c = 300;
 8 }
 9 void test04()
10 {
11     cout<<"A中a = "<<A::a<<endl;//100
12     cout<<"A中c = "<<A::c<<endl;//200
13 }

  4.命名空间可以存放变量和函数

 1 namespace A {
 2     int a=100;//变量
 3  
 4     void func()//函数
 5     {
 6         cout<<"func遍历a = "<<a<<endl;
 7     }
 8 }
 9 void test05()
10 {
11     //变量的使用
12     cout<<"A中的a = "<<A::a<<endl;
13  
14     //函数的使用
15     A::func();
16 }

  5.命名空间中的函数可以在命名空间之外定义

 1 namespace A {
 2     int a=100;//变量
 3  
 4     void func();
 5 }
 6  
 7 void A::func()//成员函数 在外部定义的时候 记得加作用域
 8 {
 9     //访问命名空间的数据不用加作用域
10     cout<<"func遍历a = "<<a<<endl;
11 }
12  
13 void funb()//普通函数
14 {
15     cout<<"funb遍历a = "<<A::a<<endl;
16 }
17 void test06()
18 {
19    A::func();
20     funb();
21 }

  6.无名的命名空间,相当于在函数前加了标识符static表示作用域在本文件内,只能在本文件中访问

  7.命名空间可以取个别名(可以用using记忆)

 1 namespace veryLongName{
 2  
 3 int a = 10;
 4 void func(){ cout << "hello namespace" << endl; }
 5  
 6 }
 7  
 8 void test(){
 9     namespace shortName = veryLongName;
10     cout << "veryLongName::a : " << shortName::a << endl;
11     veryLongName::func();
12     shortName::func();
13 }

 

posted on 2023-07-22 16:28  小凉拖  阅读(19)  评论(0编辑  收藏  举报