首页 > 编程语言 >C++基本知识梳理

C++基本知识梳理

时间:2024-03-03 22:04:03浏览次数:15  
标签:函数 基本知识 C++ 重载 编译器 参数 命名 梳理

一.命名空间

概念:命名空间是新定义的一个作用域,里面可以放函数,变量,定义类等,主要用来防止命名冲突.

实现:namespace关键字 命名空间名字{ 命名空间成员 }

注意点:

  1.命名空间可以嵌套使用,还可以使用inline关键字实现版本控制(inline修饰的命名空间默认展开到外一层命名空间).

  2.同一工程中允许存在同名的命名空间,编译器最后会将相同名称的命名空间合并成一个.

 

二.缺省参数

概念:是声明或定义函数时为函数参数指定一个默认值,在调用该函数时,如果没有指定实参则采用该默认值.否则使用实参.

分类:

  1.全缺省参数:所有参数都带有缺省值

  2.半缺省参数:部分参数带有缺省值

  注1:必须要从右向左依次给缺省值.   原因:如果声明函数func(int a = 0,int b = 0,int c);则定义时如果写fun(1,1),则编译器可能认为a=1,b=1,c未初始化.

  注2:如果声明与定义分离,则不能在声明和定义中同时给出缺省值.原因:编译器不知道使用哪个

  注3:缺省值必须是常量或全局变量或静态变量,即使用在编译时编译器能明确知道的内容

三.函数重载

特性:在相同作用域内,允许存在参数列表不同,函数名相同的多个函数.

条件:作用域相同,函数名相同,参数列表不同. 参数列表不同体现在 参数类型不同,个数不同以及类型次序不同.与返回值类型无关.

调用原理:编译期间,编译器通过对实参类型进行推导,根据推导的结果找到对应的重载函数,如果存在且不会造成二义性则调用,否则产生编译错误.

扩展:函数名修饰规则

  C语言只是在函数名前加_,所以C语言不支持函数重载

  C++比较复杂,编译器将函数参数的类型放到函数名字中,来保证函数重载时名字在底层的不同,因此能实现函数重载

注意:C++中 函数重载与返回值是否相同无关,理由同函数名修饰规则.

extern "C"的作用:在C++函数前使用extern修饰的话,表明告诉编译器,将该函数按照C的方式编译.(用途:在C++中使用C的库函数)

extern“C“关键字详解_extern c-CSDN博客

 

四.引用

概念:引用不是新定义一个变量,而是给已存在的变量取一个新的别名

 

标签:函数,基本知识,C++,重载,编译器,参数,命名,梳理
From: https://www.cnblogs.com/DSCL-ing/p/18050667

相关文章

  • C++ 接口(抽象类) 虚函数
    接口描述了类的行为和功能,而不需要完成类的特定实现。C++接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用"=0"来指定的clas......
  • C++网上购书系统项目的二次开发
    1.来源该项目来自同学以前的期末大作业:网上购书系统项目。2.运行环境及运行结果(1)运行环境:DevC++(2)运行结果:代码如下:点击查看代码#include<iostream>#include<string>#include<fstream>#include<vector>#include"buyer.h"#include"book.h"#include"order.h&q......
  • c++复习笔记——STL(vector)
    c++-----STL容器系列(1)vector1介绍Vector是stl容器中一种常见的容器,基本和数组类似,其大小(size)可变,常用于数组长度不确定时来代替数组,当数据超过vector预定值时vector将自动扩容。Vector是一种顺序存储器,在内存中连续排列,可以通过下标访问,时间复杂度为O(1)。2创建和使用使用......
  • C++ 函数调用运算符 () 重载
    函数调用运算符()可以被重载用于类的对象。当重载()时,您不是创造了一种新的调用函数的方式,相反地,这是创建一个可以传递任意数目参数的运算符函数。1#include<iostream>2usingnamespacestd;3classDistance4{5private:6intfeet;/......
  • C++ 赋值运算符'='重载
    C++拷贝构造函数(初学有点难理解)就像其他运算符一样,可以重载赋值运算符(=),用于创建一个对象,比如拷贝构造函数。1#include<iostream>2usingnamespacestd;3classDistance4{5private:6intfeet;//0到无穷7intinches;......
  • C++ ++ 和 -- 运算符重载
    原文递增运算符(++)和递减运算符(--)是C++语言中两个重要的一元运算符。1、递增和递减一般是改变对象的状态,所以一般是重载为成员函数。2、重载递增递减,一定要和指针的递增递减区分开。因为这里的重载操作的是对象,而不是指针(由于指针是内置类型,指针的递增递减是无法重载的),......
  • C++中UNIX时间戳与日期互转
    C++中UNIX时间戳与日期互转使用time.h头文件localtime可以把时间戳转为tm结构体,tm结构体中可以格式化输出时间mktime可以把tm结构体转为时间戳tm结构体中:year需要+1900,tm_mon的范围是0-11,tm_mday的范围是1-31structtm{inttm_sec;//secondsaftert......
  • pytorch报错:Variable._execution_engine.run_backward( # Calls into the C++ engine
    GPU模式下运行pytorch代码报错,pytorch为2.2.1,NVIDIA驱动版本535.161.07File"/home/devil/anaconda3/envs/sample-factory/lib/python3.11/site-packages/torch/_tensor.py",line522,inbackwardtorch.autograd.backward(File"/home/devil/anaconda3/envs/sample-......
  • C++新U4-贪心算法1
    学习目标贪心算法的概念[【贪心算法(一)】书架]    【题意分析】选出最少的奶牛数量,让他们的身高相加超过书架的高度。【思路分析】优先选择身高高的奶牛,这样子奶牛使用的数量最少。定义排序规则,将数从大到小排序定义奶牛数量n和书架高度b,并且输入输......
  • C++第二课 while循环
    循环while(条件){   循环体}#include<bits/stdc++.h>usingnamespacestd;intmain(){   inti,s;   i=1;   s=0;   while(i<=100)   {      s=s+i;      i=i+1;   }   cout<<s<<endl;   return0;}计算1......