内联函数和类-初阶

article/2025/9/18 8:49:20

目录

前言

一、内联函数

二、typeid

三、范围for的使用

四、nullptr

五、类

六、class和访问限定符

总结


前言

多多重复,百炼成钢!!!


一、内联函数

用inline修饰的函数叫内联函数-在编译时C++编译器会在函数的位置展开,没有函数调用的栈帧开销,内敛函数提升程序运行的效率。

使用场景:被频繁调用的小函数(如:swap交换函数)

1.优点:使用时在编译阶段会把函数体替换函数调用,是以一种以空间换时间的做法(在静态库/动态库);少了调用栈帧的开销,提高了效率。

2.缺点:可能使目标文件大小变大(如安装包:后缀为.dll等)-代码膨胀

3.inline函数在编译时只是个"建议",(一般情况下几十行以内的函数会被实现)函数规模较小,不是递归,且经常被调用的函数才被编译器采纳,否则会被忽略!(只要使用了inline修饰函数就不会进到符号表)

4.inline不建议声明和定义分离,分离会导致链接错误:(编译时头文件会产生相应的.o文件,编译器会到.o文件里面对照符号表找对应函数的地址为后序链接做准备,但在预处理时内联函数展开后,地址消失)inline展开后,函数地址会消失,链接找不到。(办法:直接在.h处或者.cpp处 inline定义)

没有用inline修饰: 

用inline修饰后:

二、typeid

typeid:get到变量的类型

三、范围for的使用

e为arry的成员arry0、arry1、arry2....所以要操作时用引用 

四、nullptr

1.c++中null被定义为0-bug(c语言中没有)

2.在c++中使用nullptr表示指针空值时,不需要包含头文件,它在c++11作为新关键字引入

3.在c++11中sizeof(nullptr)于sizeof((void*)0)所占字节数相同

4.建议后序表示指针空值时使用nullptr

五、类

1.c语言:struct -定义结构体 c++:struct -类(兼并了c语言中的所以用法)

2.类体中内容称为类的成员:类中的变量称为类的属性或者成员变量;类中函数称为类的方法或者成员函数。

类中两种定义方式:

1.第一种(A)声明和定义全部放在类体中,成员函数如果在类体中定义了,则编译器可能当作内联函数处理。

2.第二种(B)类声明放在放在.h文件中,定义放在.cpp文件中,(注意:成员函数名前要放类名::

一般情况下使用第二种!!!

 

 

 

int main()
{stack st;//类名-对象st.Init(4);st.push(34);cout << st.top() << endl;return 0;
}

六、class和访问限定符

1.class为定义类的关键字,classname为类的名字,{}中为类的主体,括号后的分号不能省略

2.类中内容称为类的成员;类中变量成为类的属性或者成员变量,类中函数称为类的函数或者成员函数

3.访问限定符:public-公有;protected-保护;private-私有

4.public修饰的成员在类外可以直接被访问,private和protected则不行

5.访问权限作用域为从该访问限定符到下一个访问限定符为止或者类的分号为止

6.class默认访问权限-private;struct默认访问权限-public(struct要兼容c)

class classname
{//成员函数...//成员变量...};

总结

我们需要积极的去回顾以往学过的东西噢!!!


http://chatgpt.dhexx.cn/article/c6wT6DP3.shtml

相关文章

内联函数——C++

内敛函数的定义&#xff1a; 以inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用内联函数的地方展开&#xff0c;没有函数调用建立栈帧的开销&#xff0c;内联函数提升程序运行的效率 &#xff08;它是以空间换取时间的方式提高效率&#xff0c;这里的空间指的…

【内联函数】inline关键字的作用与内联函数的特性

学习导航 一、内联函数产生的意义二、内联函数的使用三、内联函数的作用①简单易懂②支持调试③支持类型检查 四、内联函数的特性 一、内联函数产生的意义 在C语言中&#xff0c;如果我们频繁调用某些函数&#xff0c;并且这些函数都很代码量都很小&#xff0c;那么写成宏定义的…

C++之 内联函数

目录 一、 内敛函数的概念 二、 查看内联函数 三、 内联函数的特性 四、 宏和内联函数 一、 内敛函数的概念 以 inline 修饰的函数叫做内敛函数&#xff0c;编译时C编译器在调用内联函数的地方展开&#xff0c;没有函数调用建立栈帧的开销&#xff0c;内联函数提升程序运行…

内联函数(Inline Function )

目录 什么是内联函数(Inline Function) 如何将函数编写为内联函数&#xff08;how to make function inline&#xff09; 例&#xff1a; 为什么使用内联函数&#xff08;Why to use inline function&#xff09; 结论&#xff1a; 特殊规则 1.编译器可能不接受内联提议 …

内联函数

1.什么是内联函数 用关键字inline修饰的函数就是内联函数。关键字在函数声明和定义的时候都要加上&#xff0c;不写系统还是会当成常规函数 2.内联函数与一般函数的区别 1&#xff09;内联含函数比一般函数在前面多一个inline修饰符 2&#xff09;内联函数是直接复制“镶嵌”…

内联函数(inline)详解

为什么要有内联函数 在学习内联函数之前&#xff0c;大家可以写一个实现加法的宏ADD()&#xff0c;检测一下自己。 如果对宏等预编译知识不太熟悉的话&#xff0c;可以先看一下这篇文章&#xff1a;预编译——2.2.4 以下是一个正确的ADD宏&#xff1a; #define ADD(x,y) ((x…

内联函数(超详细版)

1.内联函数的由来 当我们调用函数的时候&#xff0c;实际会有额外的开销&#xff0c;为了避免或减少这些额外的开销&#xff0c;c中引入内联函数&#xff08;inline functions&#xff09;。 2.内联函数的原理 1&#xff09;当我们调用内联函数时&#xff0c;不会像调用普通函…

如何证明一个问题是NP-Hard或NP-Complete?

文章目录 NP-hard vs NP-CompleteReduction SAT ProblemReducing SAT to Shortest Clique ProblemReducing SAT to Shortest Tour Problem A List of NP-CompleteSet Vertex Cover Problem & Independent SetK-coloring and CliquePackingLongest Common Subsequence 参考资…

【机器学习】P问题、NP问题、NP-hard、NP-C问题解析与举例理解

目录 1 基本概念1.1 多项式和时间复杂度1.2 P和NP1.3 NP-hard和NP-C1.4 总结 2 举例理解NP问题3 其他NP问题 1 基本概念 1.1 多项式和时间复杂度 &#xff08;1&#xff09;多项式 a x n b x n − 1 c ax^nbx^{n-1}c axnbxn−1c&#xff0c;形如这种形式的就被称为x的最高…

P问题、NP问题、NPC问题、NP-hard问题详解

要理解P问题、NP问题、NPC问题、NP-hard问题&#xff0c;需要先弄懂几个概念&#xff1a; 什么是多项式时间&#xff1f;什么是确定性算法&#xff1f;什么是非确定性算法&#xff1f;什么是规约/约化&#xff1f; 文章目录 多项式时间&#xff08;Polynomial time&#xff09…

什么是P=NP问题?

来自&#xff1a;后端技术指南针 1 前言 今天和大家一起了解个高能知识点&#xff1a;PNP问题。 看到这里我们可能是一头雾水&#xff0c;不由得发问&#xff1a; P问题是什么&#xff1f;NP问题又是什么&#xff1f;PNP又是什么意思&#xff1f;研究并解决PNP问题的意义是什么…

NP问题总结(概念+例子+证明)

目录 基本概念 证明思路 常见例子 21个常见NPC问题 原理论证 基本概念 P类问题:(polynominal) 存在多项式时间算法的问题&#xff0c;即在多项式时间内可解的问题&#xff1b; 例如&#xff1a;冒泡排序、快速排序等问题&#xff1b; NP类问题:(Nondeterministic pol…

[知识归纳]关于NP问题的概念与解释 | NP-complete NP-hard

NP问题 P问题是一类可以通过确定性图灵机在多项式时间(Polynomial time)内解决的问题集合。NP问题是一类可以通过非确定性图灵机( Non-deterministic Turing Machine)在多项式时间(Polynomial time)内解决的决策问题集合。 多项式时间&#xff08;Polynomial time&#xff09…

P问题、NP问题、NP完全问题和NP-hard问题

在讲P类问题之前先介绍两个个概念&#xff1a;多项式&#xff0c;时间复杂度。(知道这两概念的可以自动跳过这部分) 1、多项式&#xff1a; 恩....就是长这个样子的&#xff0c;叫x最高次为n的多项式.... 2、时间复杂度 在计算机算法求解问题当中&#xff0c;经常用时间复…

P问题、NP问题、NPC问题、NPH问题详解

P&#xff1a; Polynomial&#xff0c;是指能在多项式时间内解决的问题&#xff1b;&#xff08;如果一个问题可以找到一个能在多项式的时间里解决它的算法&#xff0c;那么这个问题就属于P问题。P是英文单词多项式的第一个字母。&#xff09;NP&#xff1a;Non-deterministic …

判断凸多边形(向量叉积运用)

469. 凸多边形 - 力扣&#xff08;LeetCode&#xff09; 给定 X-Y 平面上的一组点 points &#xff0c;其中 points[i] [xi, yi] 。这些点按顺序连成一个多边形。 如果该多边形为 凸 多边形&#xff08;凸多边形的定义&#xff09;则返回 true &#xff0c;否则返回 false 。…

【编程题】判断一个多边形是否为凸多边形

题目&#xff1a; 顺序输入点的坐标&#xff0c;判断按这些点顺序连接起来的多边形是否为凸多边形还是凹多边形 输入描述&#xff1a; 输入包括两行&#xff1b; 第一行是一个整数n&#xff0c;n>3&#xff0c;作为提示输入的顶点数量 第二行为2*n个整数&#xff0c;为各点…

10343 划分凸多边形(优先做)

题目描述 10343 划分凸多边形&#xff08;优先做&#xff09; 时间限制:800MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: G;GCC;VC;JAVA Description 问题描述&#xff1a;一个正凸N边形&#xff0c;可以用N-3条互不相交的对角线将正N边形分成N-2个三角形…

N顶点凸多边形中对角线交点的个数

题目描述 对于一个N个定点的凸多边形&#xff0c;他的任何三条对角线都不会交于一点。请求楚图形中对角线交点的个数。 例如&#xff0c;6边形&#xff1a; 我们可以发现&#xff0c;两条不平行对角线才会有一个交点&#xff0c;同时&#xff0c;两条对角线又确定了一个四边形…

凸多边形的划分

题目&#xff1a; 给定一个具有 NN 个顶点的凸多边形&#xff0c;将顶点从 11 至 NN 标号&#xff0c;每个顶点的权值都是一个正整数。 将这个凸多边形划分成 N−2N−2 个互不相交的三角形&#xff0c;对于每个三角形&#xff0c;其三个顶点的权值相乘都可得到一个权值乘积&a…