当前位置:   article > 正文

C++入门基础知识

c++入门基础知识

1.命名空间

定义:
命名空间域是随标准C++而引入的。它相当于一个更加灵活的文件域(全局域),可以用花括号把文件的一部分括起来,并以关键字namespace开头给它起一个名字:

namespacename1
{
    inta = 0;
}
namespacename2
{
    inta = 1;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

namespace std  //std是C++标准库的命名空间
{
    //标准库成员
}
  • 1
  • 2
  • 3
  • 4

下面给出一个简单的C++程序:

#include <iostream>
using namespace std;
namespace A1
{
    int a = 10;
    int b = 100;
}
namespace A2
{
    int a = 20;
}
int b = 30;
int a = 50;
int main()
{
    int a = 40; 
    cout<<a<<endl;  //40
    cout<<::<<a<<endl;  //50
    cout<<A1::a<<endl;  //10
    cout<<A2::a<<endl;  //20
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

在上述程序中,若前面没有引 using namespace std; 这句话,则输出时应该为:

 std::cout<<"hello"<<std::endl; 
  • 1
  • 2

以表明其所在的作用域。

再给出一个简单程序:

namespace AA1
{
    int a = 1;
    namespace AA2
        {
            int a = 2;      
            namespace AA3           
                 {
                      int a = 3;
                 }
        }
}

int main()
{
    cout<<AA1::a<<endl;
    cout<<AA1::AA2::a<<endl;
    cout<<AA1::AA2::AA3::a<<endl;
    return 0;
}                           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

2.C++基本的输入输出流

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

3.函数重载

定义:
函数在同一个作用域内,函数名相同,参数不同【参数类型、参数个数】,返回值可相同也可不同。

下面举一个例子,代码如下:

void f(int i)
{

}
void f(char ch)
{

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这里两个函数的函数名相同,返回值类型相同,参数个数相同,参数类型不同,属于函数重载。

再举一个例子,代码如下:

void f(int i,char a)
{

}
void f(char a,int i)
{

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这里的两个函数的函数名相同,返回值类型相同,参数个数相同,参数类型不同,属于函数重载。

那么,在C++中,函数支持重载的原因是什么呢?
因为函数名的修饰规则,即命名规则。 

4.缺省参数

  1. 全缺省
    代码如下:
int Add1(int a = 10, int b = 20)
{           
     return a+b;
}

int main()
{       
    cout<<Add1()<<endl;   //30
    cout<<Add1(20)<<endl;  //将20传给a,Add值为40
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2.半缺省
代码如下:

int Add2(int a, int b = 20)
{
     return a+b;
}

int main()
{       
    cout<<Add2(10)<<endl;   //将10传给a,Add值为30
    cout<<Add1(10,30)<<endl;  //40
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

5.指针和引用 

引用的定义:
引用不是定义一个新变量,而是给一个已经定义的变量重新取一个名字。
代码如下:

int a = 10;
int& b = a;
  • 1
  • 2

此处的b就是a的一个别名,a、b指向同一空间 。
注意:
①一个变量可以有多个别名。      
②引用只能在初始化时引用一次。        
代码如下 :


void swap(int& l, int& r)
{  
     int tmp = l;  
     l = r;  
     r = tmp; 
}
 
引用的作用:           
(1)提高效率
【const引用】   
①代码如下: 
   const int d3 = 1;
   const int& d4 = d3;`
②常量具有常性  
  int d1 = 4;  
  const int& d4 = d3;  
  d1 = 5;  //d1改变d2的值  
  const int& d6 = 5; 
③隐式转换
  double d7 = 1.1;   
  const int& d8 = d7;  
(2)作参数    
①值传递   
②引用传递     
    int& Add(int a , int b)  
   {      
        int c = a+b;   
       return c;   
   }      
注意:除了作用域还存在,便可用引用。  
(3)作返回值  
 注意:不要返回一个临时变量的作用,如果返回对象出了当前函数的作用域依旧在,则最好使用引用返回,更高效。              
               
引用和指针的区别:                
 (1)引用只能在定义时初始化一次,之后不能改变指向其他变量;指针变量值可变。              
 (2)引用必须指向有效的变量,指针可以为空。           
 (3)sizeof指针对象和引用对象的意义不一样。sizeof引用是所指向变量的大小;sizeof指针是对象地址大小。         
 (4)指针和引用自增(++)自减(–) 意义不一样。         
 (5)相对而言,引用比指针安全。 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/1008141
推荐阅读
相关标签
  

闽ICP备14008679号