首页 > 编程语言 > 从C到C++

从C到C++

时间:2023-02-20 15:14:39浏览次数:36  
标签:函数 形参 int C++ 重载 new

从C到C++(二)

目录

一、域运算符

C++中新增作用域标识符:::

1、用于对与局部变量同名的全局变量进行访问

2、用于表示类的成员

二、new、delete运算符

new运算符可以用于创建堆空间

1、成功则返回首地址,失败则异常

2、语法

  • 指针变量 = new 数据类型;
  • 指针变量 = new 数据类型 [长度n];

3、new 一个新对象

  • 内存分配(operator new) (近似于C中的malloc函数)

  • 调用构造函数

    new operator 分配内存 + 调用构造函数
    operator new 只分配内存
    placement new 不分配内存、调用拷贝构造函数

4、delete 释放一个对象

  • 调用析构函数
  • 释放内存(operator delete)(近似于free)

三、重载

1、相同的作用域,如果两个函数名称相同,而参数不同,我们把它们称为重载overload

2、函数重载又称为函数的多态性(静态,编译时确定函数的入口地址(静态联编),动态联编通过virtual虚函数实现

3、函数重载不同形式:

  • 形参数量不同
  • 形参类型不同
  • 形参顺序不同
  • 形参数量和类型都不同

4、调用重载函数时,编译器通过检查实际参数的个数、类型和顺序来确定相应的被调函数

5、合法的重载例子:

int abs(int i);
long abs(int i);
void abs(int i);
//如果返回类型不同而函数名相同、形参也相同,则是不合法的。编译器会报“语法错误”

四、name managling与extern “C”

1、name managling这里为“名字改编”

2、C++为了支持重载引入name managling技术

3、extern “C” 实现C与C++混合编程

#ifdef __cpluscplus
extern "C" 
{
#endif
void fun1(int a);
void fun2(double b);
#ifdef __cpluscplus++++
}
#endif

//a.h 头文件 C/C++

五、带默认参数的函数

1、函数没有声明时,在函数定义中指定形参的默认值

2、函数既有定义又有声明时,声明时制定后,定义后就不能再指定默认值

3、默认值的定义必须遵守从右到左的顺序,如果某个形参没有默认值,则它左边的参数就不能有默认值

int fun2(int a, int b = 6, int c = 4);  //合法
int fun2(int a = 1, int b, int c = 4);  //不合法

4、函数调用时,实参与形参按照从左到右的顺序进行匹配

5、带默认形参值的函数二义性

  • 重载的函数中如果形参带有默认值时,可能产生二义性

标签:函数,形参,int,C++,重载,new
From: https://www.cnblogs.com/rz124/p/17137489.html

相关文章

  • C、C++、python、java
    C++和Python的区别python是一种脚本语言,是解释执行的,而C++是编译语言,是需要编译后在特定平台运行的。python可以很方便的跨平台,但是效率没有C++高。Python使用缩进来区......
  • C/C++学生选课管理系统[2023-02-20]
    C/C++学生选课管理系统[2023-02-20]4.15学生选课管理系统题目描述:假定有n门课程,每门课程有课程编号,课程名称,课程性质(必须/选修),学时,授课学时,实验或上机学时,学分等信......
  • C++ primer 5th 第一章阅读笔记
    第一章开始第一节编写一个简单的C++程序不同编译器使用不同的后缀命名约定,比如cc、cpp、c。比如main程序保存到prog1.cc中,可以使用如下命令来编译它:ccprog1.cc。其中......
  • Carbon真的会替代C++吗
    个人认为Carbon并不是一个编程语言,而是一个已经被苹果公司弃用的macOS开发框架,曾经用于编写ClassicMacOS和早期版本的macOS应用程序。因此,Carbon并不能替代C++......
  • 【C/C++】知识点
    序链接备注1C语言0长度数组(可变数组/柔性数组)详解_CHENGJian的博客-CSDN博客_0数组 2     ......
  • C\C++ 埃氏筛法
     1埃氏筛法的基本思想:从2开始,将每个质数的倍数都标记成合数,以达到筛选素数的目的。1#include<iostream>2usingnamespacestd;3constintmaxn=1000;4i......
  • c++常用关键字作用
    一、const关键字1.修饰C++类的成员函数修饰成员函数的时候,该函数则不能修改类内的成员变量,若是成员变量则编译器会报错。此处注意mutable关键字就是为了突破这个限制,如......
  • QML调用C++程序
    QML调用C++程序1.添加C++,MouseMemory文件(.h,.cpp)2.在main.cpp文件添加, qmlRegisterType<MouseMemory>("MouseMemory",1,0,"MouseMemory"); #第一个MouseMemory为C......
  • C++11环境安装【快速入门】
    第一步:安装编译器:https://winlibs.com/ 第二步:解压出来后 第三步:配置环境变量:bin目录 第四步:测试:gcc-v  第五步:关注作者微信公众号......
  • C/C++学生随机抽号演讲计分系统[2023-02-19]
    C/C++学生随机抽号演讲计分系统[2023-02-19]学生随机抽号演讲计分系统(★★★★)设计一款用于课程大作业检查或比赛计分的软件,基本功能:(1)设置本课程的学生总数(2)根据......