【C++】入门教程

一.命名空间

1.概念:对标识符的名称(变量,函数)进行本地化,以避免命名冲突或名字污染。
2.定义:需用namespace关键字,后面加命名空间名字,后加一对{}即可。

  • 例:
namespace N1{
    int a;
    int Add(int left, int right){
        return left + right;
    }
}

3.使用
1.加命名空间名以及作用域限定符

printf("%d",N1::a);

2.使用using将命名空间成员引入

using N1::a;

3.使用using namespace将命名空间引入

using namespace N1;

4.标准库命名空间std:进行输入输出时必须引入标准库。

using namespace std;

二.c++输入输出

1.头文件

#include<iostream>//c++中头文件不加.h

2.标准库命名空间

using namespace std;

3.输入输出函数

cin>>a>>b;//输入函数
cout<<a<<b<<endl;输出函数 endl回车换行

三.缺省参数函数

**1.概念:**声明或定义函数是为函数的参数设定默认值。在调用函数时,若有对应实参,则使用指定实参。
若没有,则使用默认值。
2.分类
全缺省参数:所有参数均有默认值
半缺省参数:只有一部分参数有默认值
注:

  • 1.默认值必须从右往左给出,不可以间隔。
    因为C++中存在不定长参数函数,例如printf 需靠% 得知有几个参数,参数从右往左压栈,从左往右出栈。
    所以,实参对应从左往右,必须从右往左给实参。
  • 2.缺省值必须为全局变量/常量。

四.函数重载

1.概念:c++允许同一作用域中,函数名相同,参数列表必须不同(个数/类型/顺序)存在。与返回值无关。
2.c与c++预编译的不同点
c语言编译,名字修饰函数时,仅为_函数名
c++编译,名字修饰函数时,会将名字与参数列表都标识出来
所以c++允许函数重载
3.extern "c"
在c++工程中,将某些函数按C语言风格编译。
例:extern "c" int add(int righr);

五.引用

1.概念:给已存在变量取一个别名,使用同一块内存空间(后面会说明这个问题)。
2.使用:类型名& +名字;
3.规范

  • 引用必须初始化
  • 一个变量可以有多个引用
  • 一个引用一旦使用,只能服务于一个变量

4.常引用:引用常量/常变量时,引用前必须加const
5.使用方法

  • 做函数参数,相当于一级指针
  • 作函数返回值

6.引用于指针的区别:
引用在底层实现上就是个指针,有开辟空间存放标识符地址。
调用时,引用隐式调用,可直接通过引用名调用
指针显示调用,须通过*解引用才可以调用

  • 引用需初始化,指针不需要
  • 指针可以服务于多个实体,引用只能对应一个
  • 没有NULL引用,有NULL指针
  • 引用较为安全,譬如野指针。

六.内联函数

1.概念:编译时,c++编译器会在调用内联函数的地方直接展开,没有函数压栈的开销。
2.使用:在函数定义/声明前加inline关键字。
3.特性

  • 以空间换时间
  • 代码很长时,或者函数有循环/递归时编译器不会展开(编译器自己判断最优)

七.auto关键字

1.概念:类型变量指示符来指示编译器,auto声明的变量由编译器在编译时推导得出。
2.使用规则

int x = 10;
auto d =10.1;
auto a = &x ;
auto *b = &x;
auto& c = x;
  • 引用时必须加&符号,指针时有无*都可以;
  • 同一行定义多个变量,类型必须相同;
  • 不能做形参
  • 不能用来定义数组

3.基于范围的for循环

void Testfor()
{
	int array[] = { 1,2,3,4,5 };
	for (auto& e : array)  //e为数组中每一个元素的引用
	{
		e *= 2;
	}
	for (auto e : array)   //e为数组中每个元素的拷贝
	{
		cout << e << " ";
	}
	return ;
}

八.指针空值nullptr

因为NULL可能被定义为常量0/无类型指针(void*)常量,所以c++中用nullptr关键字表示空值指针。

  • c++中建议使用nullptr
发布了53 篇原创文章 · 获赞 49 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43550839/article/details/100894847