C++
谢永奇1
这个作者很懒,什么都没留下…
展开
-
宏替换与内联函数的区别(c/c++)
C/C++中宏替换与内联函数的区别:(1)宏定义define:宏定义不是函数,只是简单地把先编辑好的代码在预处理阶段替换进去,所以在替换时不会进行类型检查什么的而是在编译阶段再去检查代码的正确性;但是内联函数是真正的函数,且具有函数所具有的所有特征(2)宏定义是单纯的代码替换,所以在宏定义时需要小心优先级以及类型检查等问题,如:#define mul(N) N*Nint main(){ mul(2+2); //mul("hello"); //不会进行类型检查} 执行结果为:8因为展原创 2020-10-08 14:40:20 · 445 阅读 · 0 评论 -
动态多态和静态多态(C++)
多态:即一个接口多种实现方式;C++中的多态分为两种:静态多态与动态多态一、静态多态:也成为编译时的多态;在编译时期就已经确定要执行了的函数地址了;主要有函数重载和函数模板(这里只写函数重载)(1)函数重载因为C++中确定执行的函数是根据函数名与函数的参数顺序、个数等来确定的,因此我们可以有多个同名的函数;例如我们现在有一个类中已经有了一个函数名为show无参的函数,我们在派生类中再写一个名为show但是带有一个参数的show函数,这叫函数重载也称为覆盖和重写;测试代码:#include &l原创 2020-10-03 20:58:34 · 3385 阅读 · 0 评论 -
C++中的结构体与类
C++中结构体也有权限,但权限只有一种:public,且不能存放函数,类有三种权限,且能放函数原创 2020-10-03 00:21:16 · 6091 阅读 · 2 评论 -
C++命名空间(namespace) 知识点总结
命名空间:c++中在c语言上新增的一个用于解决合作开发中函数以及变量命名冲突的方案 例如我们一条村中有两个人的名字一样都叫xyq;当他们两个呆在一起的时候,如果你想叫他们其中一个去玩的话,直接叫xyq,他们就会不知道你叫的是他们之间的哪一个,这个时候我们为了能够区分我们现在需要叫去玩的是哪一个,于是就会在他们的名字前面加上他们的父母名字或者一些能够区分他们身份的信息 因为在开发中不是所有代码都是我们自己一个人全部写完的,例如:#include <iostream>int a =原创 2020-10-01 15:17:35 · 670 阅读 · 0 评论 -
C++地址值为1(情况说明)
关于C++中地址值打印出来为1的情况;以下是测试代码:cout << 似乎没有对volatile int*做重载运算符的操作,g++报以上warning,大概是把&m当成bool类型了,所以打出来是1(true).#include <iostream>#include <iomanip>using namespace std;int main(){ const volatile int a = 10;原创 2020-09-30 21:51:03 · 1141 阅读 · 0 评论 -
C++中一个地址两个值的情况说明
今天发现一个挺有趣的代码,运行时一个地址出现了两个值;因为在我们观念里一个地址是不可能的出现两个值的#include <iostream>#include <iomanip>using namespace std;int main(){ //定义一个const变量 const int a = 10; //把a的地址赋值给p int *p = (int *)&a; //通过解引用修改p所保存的地址的值原创 2020-09-24 10:50:45 · 802 阅读 · 1 评论