c++之初体验——函数重载,引用,命名空间
2017-09-07 21:27
357 查看
初学c++,我们首先要了解的是c++和之前所学习的c的区别。作为面向过程和面向对象两个不同的编程语言,在很多方面它们都是类似的,但是也有一些不同。这篇文章,我会就我的理解作出一些说明。
1.返回值。c++和c第一个不同之处在于返回值的不同,在C里,如果一个函数没有指定返回值类型,那么他返回的是一个int型,而C++里,同样的情况下返回值必须要指定为void型,否则编译不会通过(此处测试软件为VS2016)
2.缺省参数。缺省参数是指在声明或者定义的时候为函数参数制定一个默认值,这个值在函数被调用的时候使用。缺省参数分为全缺省和半缺省。此处需要注意的是,缺省参数必须要慎用,一旦使用不当容易产生二义性。缺省函数只在C++中使用在C++中不被认可。
(1)缺省值必须是常量或全局变量
(2)带缺省值的参数必须放在参数表的最后面
(3)它不能同时出现在声明和定义中,二者选其一
3.函数重载。C++可以在同一个作用域中出现名字相同,参数列表(个数,类型,顺序)不同的函数,它被叫做函数重载。函数重载和函数返回值类型无关。函数重载是C++中的一个重点,在以后的博客中,我会再进行总结。
4.引用和指针。指针在C和C++中都有广泛的运用,此处指针不作具体说明,重点强调引用。
引用就是给变量起了一个别名,编译器不会重新开辟空间,引用对象和被引用对象共同使用一段内存空间。
类型 & 变量=被引用变量名
引用的使用有几个需要注意的地方:
(1)一个变量可以有多个引用
(2)引用一旦声明以后不能被更改,即不能再作为其他变量的引用
(3)引用在使用时必须初始化
(4)引用可以作为函数参数
(5)引用可以作为函数返回值,要保证函数的生命周期,必须比main函数长,否则编译不能通过。
5.类和结构体。C中,struct是结构体的关键字,可以被声明为变量,指针或数组,可以实现较为复杂的数据结构。结构体用来实现数据的封装,让操作更安全。C语言中的结构体类比到C++中就是类,将结构体进行扩充可以实现类,类有三种访问权限,分别为public,protect,private。类中默认的成员访问权限是private,而结构体中是public。C++中的结构体声明不必有struct关键字,而C语言中必须有。
6.命名空间。C没有而C++有,C++引入命名空间主要是为了避免命名冲突(命名污染)它在使用时会定义一个新的作用域。
使用:
(1)N1::a;
(2)using N1::a;
(3)using namespace N1;
命名空间的使用必须注意作用域
1.返回值。c++和c第一个不同之处在于返回值的不同,在C里,如果一个函数没有指定返回值类型,那么他返回的是一个int型,而C++里,同样的情况下返回值必须要指定为void型,否则编译不会通过(此处测试软件为VS2016)
2.缺省参数。缺省参数是指在声明或者定义的时候为函数参数制定一个默认值,这个值在函数被调用的时候使用。缺省参数分为全缺省和半缺省。此处需要注意的是,缺省参数必须要慎用,一旦使用不当容易产生二义性。缺省函数只在C++中使用在C++中不被认可。
(1)缺省值必须是常量或全局变量
(2)带缺省值的参数必须放在参数表的最后面
(3)它不能同时出现在声明和定义中,二者选其一
3.函数重载。C++可以在同一个作用域中出现名字相同,参数列表(个数,类型,顺序)不同的函数,它被叫做函数重载。函数重载和函数返回值类型无关。函数重载是C++中的一个重点,在以后的博客中,我会再进行总结。
4.引用和指针。指针在C和C++中都有广泛的运用,此处指针不作具体说明,重点强调引用。
引用就是给变量起了一个别名,编译器不会重新开辟空间,引用对象和被引用对象共同使用一段内存空间。
类型 & 变量=被引用变量名
引用的使用有几个需要注意的地方:
(1)一个变量可以有多个引用
(2)引用一旦声明以后不能被更改,即不能再作为其他变量的引用
(3)引用在使用时必须初始化
(4)引用可以作为函数参数
(5)引用可以作为函数返回值,要保证函数的生命周期,必须比main函数长,否则编译不能通过。
5.类和结构体。C中,struct是结构体的关键字,可以被声明为变量,指针或数组,可以实现较为复杂的数据结构。结构体用来实现数据的封装,让操作更安全。C语言中的结构体类比到C++中就是类,将结构体进行扩充可以实现类,类有三种访问权限,分别为public,protect,private。类中默认的成员访问权限是private,而结构体中是public。C++中的结构体声明不必有struct关键字,而C语言中必须有。
6.命名空间。C没有而C++有,C++引入命名空间主要是为了避免命名冲突(命名污染)它在使用时会定义一个新的作用域。
使用:
(1)N1::a;
(2)using N1::a;
(3)using namespace N1;
命名空间的使用必须注意作用域
相关文章推荐
- 初学者C++命名空间和函数重载
- C++之命名空间,程序在翻译过程中的四个步骤,函数重载,缺省参数
- 关于c++的引用变量与命名空间
- c++ 基础知识(输入输出、namespace命名空间、引用、函数重载模版、内存管理)
- c++基础知识(命名空间、输入输出流、重载、缺省、引用)
- C++学习笔记1(结构体,命名空间,标准输入输出,引用,函数,构造函数)
- C++文件头,命名空间,new和delete,内联函数,引用,函数重载,构造函数和析构函数,深拷贝和浅拷贝,explict,this指针
- C++命名空间
- C++中的命名空间问题
- C++学习6-面向对象编程基础(运算符重载、类的派生与继承、命名空间)
- 关于System.Web.Script.Serialization命名空间的引用
- C#引用WORD、EXCAL要用什么命名空间?
- C++中的命名空间
- CS0246: 找不到类型或命名空间名称“FrameWork”(是否缺少 using 指令或程序集引用?)
- C++中的命名空间、using用法、区域运算符(::)详解
- 关于向Global.asax页面中引用命名空间
- .Net中使用aliases让相同命名空间的dll引用共存
- 【C++研发面试笔记】3. 命名空间与内存管理
- 命名空间“HaiChuang.AMAC”中不存在类型或命名空间名称“WCFClient”。是否缺少程序集引用?
- C++ 编译单元和命名空间