C++基础语法

目录

一、命名空间

1.1 什么是命名空间

1.2 命名空间的定义

1.3 命名空间的使用

二、输入输出流

三、缺省参数

四、函数重载

五、内联函数


        C++是一种通用的编程语言,具有面向对象、泛型编程和低级内存操作等特性。它是由Bjarne Stroustrup在20世纪80年代初开发的,旨在扩展C语言的功能,使其更适合大型系统和复杂项目的开发。C++兼容C语言语法,本文介绍C++独有的语法。

一、命名空间

1.1 什么是命名空间

在C/C++中,变量、函数⼤量存在,这些变量、函数的名称将都存在于全局作⽤域中,可能会导致很多冲突。使⽤命名空间的⽬的是对标识符的名称进⾏本地化,以避免命名冲突。

1.2 命名空间的定义

namespace 空间名
{

}
//注意末尾没有分号

说明

  1. 命名空间中可以定义变量/函数/类型
  2. 命名空间支持嵌套定义
  3. namespace只能定义在全局
  4. 多个文件定义的同名namespace编译器自动合并,不会发生冲突
  5. C++标准库都放在⼀个叫std(standard)的命名空间中。

1.3 命名空间的使用

编译器查找⼀个变量的声明或者定义时,默认只会在局部或者全局查找,不会到命名空间⾥⾯去查找。要使⽤命名空间中定义的变量/函数,有以下三种⽅式:

  • 指定命名空间访问——作用域限定符::
    namespace paradiso
    {
    	int a = 1;
    	int b = 2;
    }
    
    int main()
    {
    	printf("%d\n", paradiso::a);
    	return 0;
    }
  • using将命名空间中的成员展开——using+空间名+限定符+域中变量
    namespace paradiso
    {
    	int a = 1;
    	int b = 2;
    }
    
    using paradiso::b;
    
    int main()
    {
    	printf("%d\n", b);
    	return 0;
    }
  • 展开命名空间的全部成员——using+namespace+空间名
    namespace paradiso
    {
    	int a = 1;
    	int b = 2;
    }
    
    using namespace paradiso;
    
    int main()
    {
    	printf("%d\n", b);
    	printf("%d\n", a);
    	return 0;
    }

二、输入输出流

  1. <iostream> 是 Input Output Stream 的缩写,是标准的输⼊、输出流库。注意没有.h
  2. <<是流插⼊运算符,>>是流提取运算符。
  3. cout/cin/endl等都属于C++标准库,C++标准库都放在⼀个叫std(standard)的命名空间中,要通过命名空间的使⽤⽅式去⽤他们。
  4. 比起C语言的优势:自动识别变量类型
#include<iostream>

using namespace std;

int main()
{
	int a = 0;
	double b = 0;
	char c = 0;
	float d = 0;

	cin >> a >> b >> c >> d;
	cout << a << " " << b << " " << c << " " << d << " " << endl;

	return 0;
}

 

三、缺省参数

缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调用该函数时,如果没有指定实参
则采用该形参的缺省值,否则使⽤指定的实参,缺省参数分为全缺省和半缺省参数。

#include<iostream>

using namespace std;

void Func(int a = 0)
{
	cout << a << endl;
}

int main()
{
	Func();
	Func(2);
	return 0;
}

全缺省就是全部形参给缺省值,半缺省就是部分形参给缺省值。C++规定半缺省参数必须从右往左依次连续缺省,不能间隔跳跃给缺省值。

带缺省参数的函数调⽤,C++规定必须从左到右依次给实参,不能跳跃给实参。

#include<iostream>

using namespace std;
//全缺省
void Test1(int a = 1, int b = 2, int c = 3)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;
}
//半缺省
void Test2(int a, int b = 2, int c = 3)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;
}
int main()
{
	Test1();
	cout << endl;
	Test1(10);
	cout << endl;
	Test1(10, 20);
	cout << endl;
	Test1(10, 20, 30);
	cout << endl;
	Test2(100);
	cout << endl;
	Test2(100, 200);
	cout << endl;
	Test2(100, 200, 300);
	return 0;
}

四、函数重载

由于C语⾔不⽀持同⼀作⽤域中出现同名函数,比如在写一个加法函数时,不同类型的加法需要写多个不同名的函数。C++通过函数重载来解决这个问题

函数重载的两同三不同

相同:

  1. 函数名相同
  2. 作用域相同

不同:

  1. 参数类型不同
    int Add(int left, int right)
    {
        return left + right;
    }
    double Add(double left, double right)
    {
        return left + right;
    }
  2. 参数个数不同
    void f()
    {
        cout << "f()" << endl;
    }
    void f(int a)
    {
        cout << "f(int a)" << endl;
    }
  3. 不同参数类型的顺序不同
    void f(int a, char b)
    {
        cout << "f(int a,char b)" << endl;
    }
    void f(char b, int a)
    {
        cout << "f(char b, int a)" << endl;
    }

五、内联函数

内联函数解决的是C语言中宏函数易错难写的问题。⽤inline修饰的函数叫做内联函数,编译时C++编译器会在调⽤的地⽅展开内联函数。

#include<iostream>
using namespace std;
inline int Add(int x, int y)
{
	int ret = x + y;
	return ret;
}
int main()
{
	int ret = Add(1, 2);
	cout << Add(1, 2) * 5 << endl;
	return 0;
}

相关推荐

  1. 算法基础 - c++语法

    2024-07-10 07:18:02       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 07:18:02       99 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 07:18:02       107 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 07:18:02       90 阅读
  4. Python语言-面向对象

    2024-07-10 07:18:02       98 阅读

热门阅读

  1. 文件格式是.pb应该怎么查看?

    2024-07-10 07:18:02       37 阅读
  2. 高考假期预习指南

    2024-07-10 07:18:02       35 阅读
  3. YOLOv5/v7 应用轻量级通用上采样算子CARAFE

    2024-07-10 07:18:02       29 阅读
  4. 探索Hash Router:构建单页应用的基石

    2024-07-10 07:18:02       27 阅读
  5. Django学习收尾

    2024-07-10 07:18:02       29 阅读
  6. Linux Vim全面教程

    2024-07-10 07:18:02       30 阅读
  7. 【Linux命令基础】vim的简介

    2024-07-10 07:18:02       29 阅读
  8. linux vim编辑文件界面的所有命令

    2024-07-10 07:18:02       27 阅读
  9. [linux] 如何优雅的用vim阅读jsonl文件

    2024-07-10 07:18:02       31 阅读