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

命名空间
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> 没有缺省构造函数的类成员变量类。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值