C++零碎基础知识点(一)
2017-09-27 21:32
295 查看
命名空间
C++中命名空间是为了解决全局命名冲突的问题,可以在一段程序中定义相同的变量名。
一般格式:
C++中std名字空间中声明和定义了标准C++库中的所有组件;使用有两种方法:
1>,用using指示符:using namespace std;
2>,std :: 变量( :: 是作用域解析符)。
C++基本的输入输出流
cout是标准输出流对象,<< 是输出操作符;
cin是标准输入流对象,>>是输入操作符;
endl是换行操作符;
都属于C++标准库,在std的名字空间里.
函数重载
函数重载的规则:
1>,两个函数须在同一作用域;
2>,函数名须相同;
3>,参数列表也不相同,包括参数的个数,类型,排列顺序;
4>,函数返回类型可以相同可以不同;
那么C++为什么支持重载?
C++缺省参数
缺省函数:C++中,如果一个函数没有参数,或者函数的所有参数都有默认值,就可以称为是缺省函数。
1>,全缺省参数
2>,半缺省参数
注:只能在声明时设置默认参数;调用时实参对形参的初始化必须是从左向右的。
指针和引用
引用的概念:引用是给已经定义过的变量重新命名。
使用方法:变量类型 &新变量名 = 定义过的变量名;
做参数—引用传递 : 如果形参为引用类型,则形参是实参的别名,实际传的是地址。
(当不希望函数内改变参数x的值时,使用常引用传参)。
做返回值的作用 : 传引用返回时,是将返回值的地址传到寄存器中。
(当返回对象出了函数作用域时,使用引用来返回,更高效,返回一个临时变量的引用就没有意义了)。
指针和引用的区别
1>,引用须初始化,而指针不用;
2>,引用只能初始化一次,之后将不能改变其指向,而指针的值是可以变化的;
3>,引用须指向有效的变量,而指针可以为NULL;
4>,sizeof引用求的是所指向变量的大小,而sizeof指针求的是对象地址的大小;
5>,表面上看,引用没有分配空间,而指针有4字节空间;
6>,引用自增(++)自减(–)是数值加一或减一,而指针自增(++)自减(–)与类型与关;
7>,指针比引用灵活,所以存在不安全性。
注:引用必须初始化,且只能在初始化时引用一次。
初始化列表
初始化列表:用”:”和函数声明隔开,用” , “隔开每个数据列表,用括号里面的
变量初始化数据成员。
初始化列表和函数体内初始化的对比:初始化列表比函数体内初始化高效。
原因是函数体内初始化时编译器还是会先执行默认的初始化列表,之后再进行
函数体内初始化。
注:初始化列表的初始化顺序是按照声明顺序进行的,不是初始化列表里面的顺序。
题:1.哪三类成员变量必须在初始化列表中初始化?
2.哪些类的构造函数必须代码实现,不能默认生成?
这两道题考点相同……
第一题答案:
1>常量成员变量。
2> 引用类型成员变量。
3> 没有缺省构造函数的类成员变量。
(常量和引用创建时都必须初始化)
第二题答案:
1>含常量成员变量类。
2>含引用类型成员变量类。
3> 没有缺省构造函数的类成员变量类。
C++中命名空间是为了解决全局命名冲突的问题,可以在一段程序中定义相同的变量名。
一般格式:
namespace variable_name1 { int ret=0; } namespace variable_name2 { int ret=8; }
C++中std名字空间中声明和定义了标准C++库中的所有组件;使用有两种方法:
1>,用using指示符:using namespace std;
2>,std :: 变量( :: 是作用域解析符)。
C++基本的输入输出流
#include <iostream> using namespace std; int main () { int i1 = 1; cout<<"c++ type:" <<"int->"<< i1<<endl ; cin>>i1 ; cout<<"c++ type:" <<"int->"<< i1<<endl; return 0; }
cout是标准输出流对象,<< 是输出操作符;
cin是标准输入流对象,>>是输入操作符;
endl是换行操作符;
都属于C++标准库,在std的名字空间里.
函数重载
函数重载的规则:
1>,两个函数须在同一作用域;
2>,函数名须相同;
3>,参数列表也不相同,包括参数的个数,类型,排列顺序;
4>,函数返回类型可以相同可以不同;
那么C++为什么支持重载?
C++缺省参数
缺省函数:C++中,如果一个函数没有参数,或者函数的所有参数都有默认值,就可以称为是缺省函数。
1>,全缺省参数
int Sub1 (int a = 3, int b = 0) { return a - b; } void Test() { Sub1(); }
2>,半缺省参数
int Sub2 (int a, int b = 0) { return a - b; } void Test() { Sub2(2); }
注:只能在声明时设置默认参数;调用时实参对形参的初始化必须是从左向右的。
指针和引用
引用的概念:引用是给已经定义过的变量重新命名。
使用方法:变量类型 &新变量名 = 定义过的变量名;
const int a=6; int &b=a; 编译不能通过,a变量具有常性,b前面需要加一个const才可以,但是只能读不能修改。 double d=3.21; const int &e=d; 这里d是双浮点型,e为int型,d要生成一个临时变量空间将d的值转化为整型才可进行引用,e这时是临时变量空间的引用,具有常性,不能修改赋新值。
做参数—引用传递 : 如果形参为引用类型,则形参是实参的别名,实际传的是地址。
(当不希望函数内改变参数x的值时,使用常引用传参)。
做返回值的作用 : 传引用返回时,是将返回值的地址传到寄存器中。
(当返回对象出了函数作用域时,使用引用来返回,更高效,返回一个临时变量的引用就没有意义了)。
指针和引用的区别
1>,引用须初始化,而指针不用;
2>,引用只能初始化一次,之后将不能改变其指向,而指针的值是可以变化的;
3>,引用须指向有效的变量,而指针可以为NULL;
4>,sizeof引用求的是所指向变量的大小,而sizeof指针求的是对象地址的大小;
5>,表面上看,引用没有分配空间,而指针有4字节空间;
6>,引用自增(++)自减(–)是数值加一或减一,而指针自增(++)自减(–)与类型与关;
7>,指针比引用灵活,所以存在不安全性。
注:引用必须初始化,且只能在初始化时引用一次。
初始化列表
class Time { public: Time(int hour = 9, int minute = 54, int second = 23) :_hour(hour) //初始化列表 ,_minute(minute) ,_second(second) { _hour = hour; //函数体内初始化 _minute = minute; _second = second; }
初始化列表:用”:”和函数声明隔开,用” , “隔开每个数据列表,用括号里面的
变量初始化数据成员。
初始化列表和函数体内初始化的对比:初始化列表比函数体内初始化高效。
原因是函数体内初始化时编译器还是会先执行默认的初始化列表,之后再进行
函数体内初始化。
注:初始化列表的初始化顺序是按照声明顺序进行的,不是初始化列表里面的顺序。
题:1.哪三类成员变量必须在初始化列表中初始化?
2.哪些类的构造函数必须代码实现,不能默认生成?
这两道题考点相同……
第一题答案:
1>常量成员变量。
2> 引用类型成员变量。
3> 没有缺省构造函数的类成员变量。
(常量和引用创建时都必须初始化)
第二题答案:
1>含常量成员变量类。
2>含引用类型成员变量类。
3> 没有缺省构造函数的类成员变量类。
相关文章推荐
- c++基础知识
- 紫书c++语言基础细节知识
- 复习C++基础知识-----“我的第一本C++”读书笔记1
- C++基础知识——指向指针的指针
- C++中指针的基础知识
- [C\C++基础知识] main函数的参数argc和argv
- C++基础知识 动态链接库和静态链接库
- C/C++基础知识总结<一>
- C++中函数的基础知识
- [C/C++基础知识] 一篇就让你彻底搞懂qsort快速排序的文章
- C++基础知识
- 【C++基础】C-串知识整理
- C++入门基础知识
- C++基础知识day8
- C++ 函数模板基础知识
- C++基础知识(二)
- j2se学习中的一些零碎知识点2之基础知识
- C++的一些基础知识,对面试大有裨益
- C++基础知识
- c++核心基础知识(内存管理)