您的位置:首页 > 编程语言 > C语言/C++

C++入门基本知识

2017-06-20 21:54 204 查看
1.命名空间

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

3.重载(C++为什么支持重载?)

4.C++缺省参数

5.指针和引用(概念、使用方法、做参数、做返回值的作用,指针和引用的区别)

1.命名空间
namespace

C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。

使用C++标准程序库的任何标识符时,可以有三种选择:

1>直接指定标识符。 输出为std::cout <<  a << std::endl;

2>使用using关键字
using std::cout; using std::endl; using std::cin; 以上程序可以写成 cout << a << 3.4 << endl;

3>最方便的就是使用using namespace std; 例如: using namespace std;这样命名空间std内定义的所有标识符都有效(曝光)。就好像它们被声明为全局变量一样。那么以上语句可以如下写:
cout <<a<< endl;

1>

#include <iostream>
int a = 10;
int main()
{
std::cunt<<a<<std::endl;
return 0;
}
2>

#include <iostream>
using std::cout;
using std::endl;
using std::cin;
int a = 10;
int main()
{
cout<<a<<endl;
return 0;
}

3>using namespace std

#include <iostream>
using namespace std;
int a = 10;
int main()
{
cout<<a<<endl;
return 0;
}


4>命名空间namespace,可以避免导致全局命名冲突问题.

#include <iostream>
using namespace std;
namespace A1//命名空间A1
{
int a = 20;
int b = 10;
}
int a = 10;//全局变量
int main()
{
cout<<A1::a <<endl;//输出命名空间A1中a的值
cout<<::a <<endl;//输出全局变量a的值
cout<<a<<endl;//就近输出a的值  即全局变量a
return 0;
}
运行结果:



5>定义全局变量时可以用命名空间 即using namespace 命名空间名(相当于将命名空间的变量在全局变量中拷贝了一份)

#include <iostream>
using namespace std;
namespace A1
{
int a = 10;
}
using namespace A1;
int main()
{
cout<<::a <<endl;//即输出全局变量中a的值
return 0;
}


6>结构体名字相同,用命名空间定义,则可以避免重复定义

namespace A1
{
struct ListNode
{
};
}
struct ListNode
{
};


7>嵌套

namespace A1
{
int a = 10;
namespace A2
{
int a = 20;
}
}

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

1>输入cin>>a

#include <iostream>
using namespace std;
int main()
{
int a = 10;
cin>>a;//相当于C语言中的scanf("%d",&a);这的a直接被引用,不用取地址
cout<<a<<endl;
return 0;
}
2>输出:cout<<a<<endl;

C++支持连续输入输出 eg:cout<<a<<b<<c<<endl;

int main()
{
int a = 10;
double b = 2.22;
cout<<"C++type:"<<"int-> "<<a<<"double-> "<<b<<endl;
return 0;
}
运行结果:



3.重载(C++为什么支持重载?)
函数重载就是指:在同一作用域类,一组函数的函数名相同,参数列表不同(个数不同或类型不同或参数顺序不同),返回值可同可不同。
C语言:变量定义必须在域的开始,且不能出现两个相同的函数名。

C++:变量定义可以在任意位置,且可以有两个相同的函数名。(函数重载)

为什么c语言不支持重载而c++支持重载?
主要原因是c和c++的编译器在对函数进行重命名的时候用的方法不一样,比如同一个函数 int ADD(int a,int b)
C编译器处理后 将这个函数重新命名为 _ADD
C++编译器处理后,将这个函数重新命名为 _ADD_int_int    
所以说函数重载的本质是:参数列表不同:1参数的类型不同 2参数个数不同3参数的顺序不同。  这三点引起的编译器修饰函数名的不同

4.C++缺省参数
对于C++的缺省参数的使用我们应该注意以下几点: 
    1>缺省参数不能出现在函数指针、函数引用以及typedef中  
    2>缺省参数可以在不同的声明中逐步给出  
    3>不同作用域的声明中定义的缺省参数是独立的,互不影响;  
    4>同一作用域的声明中不能重复定义同一个参数的缺省值。 

5.指针和引用(概念、使用方法、做参数、做返回值的作用,指针和引用的区别)
      指针 : 指向一块内存,它的内容是所指内存的地址;

int a = 10;
int *p = &a;
       引用 :是某块内存的别名.

int a = 10;
int & b = a;
int &c = b;//b,c都是a的别名   


 区别:

    1. 指针是一个实体,而引用仅是个别名;

    2. 引用使用时无需解引用(*),指针需要解引用;

    3. 引用只能在定义时被初始化一次,之后不可变;指针可变;

    4. 引用没有 const,指针有 const,const 的指针不可变;

    5. 引用不能为空,指针可以为空.
  

     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息