c++入门基础知识

来源:互联网 发布:手机淘宝实人认证在哪 编辑:程序博客网 时间:2024/06/03 19:24

1、命名空间

    所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。

    标准C++引入命名空间,主要是为了避免成员的名称冲突。若果用户都给自己的命名空间取简短的名称,那么这些(往往同是全局级的)命名空间本身,也可能发生名称冲突。如果为了避免冲突,而为命名空间取很长的名称,则使用起来就会不方便。这是一个典型的两难问题。

标准C++为此提供了一种解决方案——命名空间别名,格式为:namespace 别名 = 命名空间名;

引入命名空间,通过使用namespace  xxx;所使用的的库函数或变量就是在该命名空间中定义,这样才不会引起冲突

#include<iostream>using namespace std;namespace name1{int a = 3;}namespace name2{int a = 23;}int main(){cout << name1::a << endl;//::作用于解析符cout << name2::a << endl;//我们使用了相同名字的全局变量,被定义在不同的命名空间,因此没有发生重定义return 0;}

标准C++引入命名空间,除了可以避免成员的名称发生冲突之外,还可以使代码保持局部性,从而保护代码不被他人非法使用。如果你的目的主要是后者,而且又为替命名空间取一个好听、有意义、且与别人的命名空间不重名的名称而烦恼的话,标准C++还允许你定义一个无名命名空间。你可以在当前编译单元中(无名命名空间之外),直接使用无名命名空间中的成员名称,但是在当前编译单元之外,它又是不可见的。
无名命名空间的定义格式为:
namespace {
       声明序列可选
}

namespace {       int i;       void f() {/*……*/}}int main() {       i = 0; // 可直接使用无名命名空间中的成员i       f(); // 可直接使用无名命名空间中的成员f()}

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

cin数据的输入

cin是与标准输入设备即键盘连接的预定义输入流,它从输入流中读取数据,数据从输入提起运算符“>>”处流进程序。

输入流对象cin输出数据的语句格式为:

cin>>变量名1>>变量名2>>......>>变量名n;  “>>”是输入操作符,用于从cin输入流中取得数据,并将取得的数据传送给其后的变量,从而完成输入数据的功能。 注意:“>>”操作符后除了变量名外不得有其他数字、字符串,否则系统会报错。 

数据的输出cout 
cout是标准输出设备即显示器(默认设备)连接的预定义输出流。C++语言的插入运算符“<<”向输出流发送字符,cout是数据的目的地,插入运算符“<<”把数据传送到cout。 
输出流对象cout输出数据的语句格式为: 
cout<<数据1<<数据2<<……<<数据n; 
其中,“<<”是输出操作符,用于向cout输出流中插入数据。 
在cout中还可以使用流控制符控制数据的输出格式,但要注意使用这些流控制符时,要在程序的开始部分嵌入头文件“iomanip.h”。 

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

      重载,简单说,就是同一作用域中,一组函数或者方法有相同的名称,但是参数列表不相同(个数不同或类型不同)的情形,返回值可同可不同,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。 
      重载是指相同的函数名,但参数的类型或个数中只要有所不同,便进行再定义,编译之后重载的函数都具有不同的地址,也就是说虽然函数名相同,实际上是不同的函数,在调用时,编译系统会根据不同之处自动区别是调用哪一个函数。对于普通函数和后面要学的类的成员函数都适用。

      从代码的编译到运行,在VC6.0或VS这种编译器下,它是系统直接完成了翻译与链接,直接生成了运行结果。

编译器内1.预处理
   1)头文件展开
   2)宏的替换
   3)去注释
   4)条件编译
2.编译过程:将高级语言转为汇编语言
3.汇编过程:汇编语言转为二进制程序
链接部分:所引用的数据链接进来部完成了翻译部分:

   在c语言中没有命名修饰,同名函数会冲突
   在c++中,有命名修饰,他会把每一个参数的类型或其他用一个字符串来表示加到函数名上。所以重载的两个同名函数编译出来的函数名不同,所以不冲突
   在链接时,都是找名字进行链接的,就比如以上两个函数,
   在C语言中两个的名字一样,就会在链接中报错。

4、C++缺省参数

   缺省参数实际上就是在调用函数的时候,没有指定参数,会为函数提供一个缺省值。 
   缺省参数有两种类型:全缺省和半缺省

   缺省参数不能出现在函数指针、函数引用以及typedef中 
   缺省参数可以在不同的声明中逐步给出 
   不同作用域的声明中定义的缺省参数是独立的,互不影响; 
   同一作用域的声明中不能重复定义同一个参数的缺省值。

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

   指针,全称为指针变量,是用来存储内存地址的一种变量。程序中,一般通过指针来访问其指向的内存地址中的内容(数据)。但是使用指针会让程序的运行变得不是那么的快。 

   引用,是C++中提出来的一种新的使用变量的方式,即,给实际变量起个别名,通过这个别名来引用实际的变量。标准C中不支持变量的引用。 引用的格式一般为:类型& + 引用变量名= 已定义过的变量名; 

   引用的特点:

(1)一个变量可取多个别名

(2)引用必须初始化

 引用和指针的区别和联系 
(1)引用只能在定义时初始化一次,之后不能改变指向其它变量(从一而终);指针变量的值可变。 
(2)引用必须指向有效的变量,指针可以为空。 
(3)sizeof指针对象和引用对象的意义不一样。sizeof引用得到的是所指向的变量的大小,而sizeof指针是对象地址的大小。 
(4)指针和引用自增(++)自减(–)意义不一样。 
(5) 相对而言,引用比指针更安全。用只能在初始化的时候引用一次不能再定义为其他变量的别名。

指针比引用更灵活,但是也更危险。使用指针时一定要注意检查指针是否为空。指针所指的地址释放以后最好置0 ,否则可能存在野指针问题。



原创粉丝点击