【C++】入门基础知识

(一)命名空间 

  命名空间实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。它相当于一个更加灵活的文件域(全局域),可以用花括号把文件的一部分括起来,并以关键字namespace开头给它起一个名字:           

  namespace name1 

  {

   int a = 0;

   }

   namespace name2
   {
   int a = 1;
  }
   name1::a = 3;
   name2::a = 4;

  {
   int a = 0;
   }
   namespace name2
   {
   int a = 1;
  }
   name1::a = 3;

   name2::a = 4;


  命名空间的作用:解决全局命名冲突的问题标准C++库中的所有组件都是在一个被称为std的名字空间中声明和定义的。在采用标准C++的平台上使用标准C++库中的组件,只要写一个using指示符: using namespace std;就可以直接使用标准C++库中的所有成员。或者 std::成员的方式也可以使用C++库里的成员。(::是作用域解析符 )
  namespace std // std是C++标准库的名字空间
  {
  // 标准库成员

  }

实现一个简单的C++程序 :

#include <iostream> 

using namespace std;

int main ()

std::cout<<"hello world"<<std::endl; 

return 0;

}


(二)C++基本的输入输出流

    cout是标准输出流对象,<< 是输出操作符; cin是标准输入流对象,>>是输入操作符; endl是换行操作符;他们都属于C++标准库,所以都在std的名字空间里面。

   #include <stdio.h> int main ()

   {

int i2 = 1; double d2 = 2.22;

printf ("c type: int->%d, double->%f\n" , i2, d2);

printf("please input int and double:" ); scanf ("%d, %f" , &i2, &d2);

printf ("c type: int->%d, double->%f\n" , i2, d2); 

}

  

C语言的格式控制输出不同的格式,C++也可以:

【C++】入门基础知识

(三)重载

  在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同。例如希望交换两个变量的值,这两个变量有多种类型,可以是 int、float、char、bool 等,我们需要通过参数把变量的地址传入函数内部。在C语言中,程序员往往需要分别设计出三个不同名的函数,但在C++中,这完全没有必要。C++ 允许多个函数拥有相同的名字,只要它们的参数列表不同就可以,这就是函数的重载(Function Overloading)。借助重载,一个函数名可以有多种用途。

例:void print(int a)

{  

printf("void print(int a)\n");

}


void print(string a)//参数类型不一样

{

printf("void print(string a)\n");

}

 函数的重载的规则:

    • 函数名称必须相同。
    • 参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)。
    • 函数的返回类型可以相同也可以不相同。
    • 仅仅返回类型不同不足以成为函数的重载。

      C++ 是如何做到函数重载的

    • C++代码在编译时会根据参数列表对函数进行重命名,当发生函数调用时,编译器会根据传入的实参去逐个匹配,以选择对应的函数,如果匹配失败,编译器就会报错,这叫做重载决议(Overload Resolution)。从这个角度讲,函数重载仅仅是语法层面的,本质上它们还是不同的函数,占用不同的内存,入口地址也不一样。

(四)C++缺省参数 

       所谓缺省参数,顾名思义,就是在声明函数的某个参数的时候为之指定一个默认值,在调用该函数的时候如果采用该默认值,你就无须指定该参数。缺省参数使用主要规则:调用时你只能从最后一个参数开始进行省略,换句话说,如果你要省略一个参数,你必须省略它后面所有的参数,即:带缺省值的参数必须放在参数表的最后面。 缺省值必须是常量