3-19(c++基础)

一、C++入门

关键字:c++一共有63个关键字。

1、命名空间;

在c/c++中,变量,函数和类都是大量存在的,这些变量,函数,类的名称都是作用域全局中,名字一样可能造成冲突。使用命名空间的目的是对标识符的名称进行本地化。


namespace关键字就是处理命名空间的

命名空间定义:

namespace 空间名字 {};{}里面为命名空间的成员,也就是这些成员属于该空间里面。这些成员变量不能随意使用,使用需要根据命名空间使用规则来进行使用。

如  namespace N1

{

int a;

扫描二维码关注公众号,回复: 12775353 查看本文章

int add(int ret)

{

return 0;

}

}

命名空间还可以嵌套命名空间。


命名空间的使用:3种方法。

第一种:加命名空间名称及作用域限定符。

如N1::a,::为作用域限定符。

第二种:使用using将命名空间成员引入。

如 using n1::a,这样a就可以随便使用了。

using为展开。

第三种:展开命名空间所有成员

如:using namespace N1;.,这样N1里面所有成员都可以直接使用。


2、输入/输出

使用cout标准输出(控制台)和cin标准输入(键盘)时候i,必须使用头文件<iostream>,以及std标准命名空间。

using namespace std;表示c++所有东西都可以使用,std是c++所有东西名称,using展开,就可以随意使用。。

cin>>a;//输入a

cin>>a>>b;输入a,b

cout<<a<<b<<end1;表示输出a,b,并且换行,end1表示换行。



3、缺省参数(备胎参数)

缺省参数就是指声明或定义时为函数的参数指定一个默认值,再调用该函数时,如果没有给实参赋值,则使用该形参参数,否则使用实参。

分类:

全缺省参数:就是所有参数就赋值了;

半缺省参数:部分参数没有赋值。


注意:半缺省参数必须从右往左依次来给出,不能间隔赋值。

缺省参数不能在声明和定义同时出现。

缺省参数必须是常量或全局变量

c语言不支持。


4、函数重载

在c++中同一作用域声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数/类型/顺序)必须不同。

函数重载与返回值无关,如果只有函数返回值不同,不能说是函数重载。


为什么c++可以函数重载,而c语言不行,主要因为c++具有名字修饰规则。



extern"C"

有时候在C++工程里面可能需要将某些函数按照c的风格来编译,在函数前面加extern"C",意思是告诉编译器,将该函数按照c规则来编译



5、引用

引用不是新定义一个变量,而是给已存在变量取一个别名,编译器不会为引用变量开辟内存空间,他和他引用的变量公共同一块空间。


格式:引用类型&  引用变量名(对象名)=引用实体

int& ra=a;   ra就为a的引用,为其变量名。

注意:引用类型必须和引用实体是同种类型。


引用特性:

引用在定义时必须初始化。

一个变量可以有多个引用。


常引用:

const int a=10;

int& ra=1;      //错误写法,因为a是只读,ra为可读可写,这样会改变a的值

const int& ra=a;    正确写法。

引用的权限得小于等于被引用实体得权限。

权限不适应与普通变量之间的 赋值,适应与引用和指针。

非const 可以赋值给const和非const,const只能赋值给const。


使用场景:

做参数:

做返回值:

如果一个函数要引用作为返回值, 就必须要求其返回变量在出了这个作用域以后还存在,如果不存在,就不能使用引用作为返回值。

使用引用返回可以减少创建临时变量,提高效率。

static声明得变量  生命周期会变长,会在静态区。  static定义的变量 只会执行一次,只会在定义时执行一次。


传参、传引用效率比较:

以指作为参数或者返回值类型,在传参和返回期间,函数不会直接传递实参或者变量本身直接返回,而是传递实参或返回变量的一份临时拷贝,,因此效率非常低。




引用和指针区别:

引用在定义时必须初始化;    指针不需要;

引用在初始化引用一个实体后,就不能在引用其他实体;而指针可以在任何时候指向任何一个同类型的实体;

没有NULL 的引用;有NULL指针。

在sizeof中的含义不同:引用的结果为引用实体的类型大小,,但指针始终时地址空间所占字节数4/8.

引用自加即引用的实体加1;指针自加即指针向后偏移一个类型的大小。

有多级指针,但是无多级引用。

访问实体类型不同:指针需要解引用,,引用编译器自己处理

引用相比指针更安全一些。


6、内联函数

inline修饰的函数叫做内联函数,编译时c++编译器会在调用内联函数的地方展开,,没有函数压栈的开销,内联函数提升程序运行的效率。


特性:

inline是以空间换时间的做法,,省去了调用 函数的开销,,所以代码很长的函数不适合做内联函数。

inline对编译器而言,只是一种建议,编译器会自动优化,选择合适的。

inline的声明和定义应该在一起。


面试考点

宏的优缺点:

优点:

增强代码的复用性。

提高性能。

缺点:

不方便调试。

导致代码的可读性差,可维护性差,容易误会。

没有类型安全的检查。

c++哪些技术可以代替宏:

常量定义——》const

函数定义——》inline函数。




猜你喜欢

转载自blog.51cto.com/15085121/2666195
今日推荐