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

C++零碎基础知识点(一)

2017-09-27 21:32 295 查看
命名空间

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> 没有缺省构造函数的类成员变量类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息