![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 52
雪月行狼
这个作者很懒,什么都没留下…
展开
-
函数指针的定义和使用
一、含义:顾名思义,函数指针就是一个函数的指针。它的本质就是一个指针,指向一个函数的代码段。二、声明:函数指针的声明可以有三种方法1.使用完整的函数声明格式来声明,其格式为:类型说明符 (*函数指针名) (参数);例如: size_t (*fun)(std::string); 这里fun就被声明为了一个函数指针,指向的函数的形式必须为返回值类型为size_t, 参数列表为只包含一个string类型的参数。2.使用typedef先自定义函数指针类型,再用自定义类型来声明函数指针变量,其格式为 typ原创 2021-06-01 19:47:24 · 4244 阅读 · 0 评论 -
C++ 动态绑定
C++中使用继承可以定义相似类型的类并对其相似关系建模。 C++的动态绑定可以帮助程序在一定程度上忽略相似类(基类和派生类)的差别而使用相同的处理方式来处理对象。定义两个类:class book{public: book() { m_price = 0.0; m_sailed_n = 0; m_min_n = 10; } ~book() {} string isbn(void) const ...原创 2021-05-12 15:24:49 · 1543 阅读 · 0 评论 -
C++中的位移操作
转自https://blog.csdn.net/cg2258911936/article/details/1035746041、什么样的数据类型可以直接移位char、short、int、long、unsigned char、unsigned short、unsigned int、unsigned long都可以进行移位操作,而double、float、bool、long double则不可以进行移位操作。2、有符号数据类型的移位操作对于char、short、int、long这些有符号的数据类型:对转载 2021-05-06 16:28:30 · 7625 阅读 · 0 评论 -
static在C++中的作用总结
1.static局部变量(1)存储在静态存储区,生存周期从第一次声明到进程结束(2)除了只能在本文件可见外,其作用域和普通的变量没什么两样(3)声明和初始化之后,再次调用有关声明和初始化的代码,则声明和初始化的语句将被忽略。2.static本地函数(1)表示这个函数是一个本地函数,不能被其他文件的函数调用3.static类成员(1)静态类成员是独立于类对象的成员,也就是说类的继承体系中共有一个静态成员(变量,函数)(2)除了正常的调用格式外,还可以用类名::的形式调用(变量,函数)(3)静原创 2021-04-12 14:42:53 · 1222 阅读 · 0 评论 -
请注意*p++和++*p的真正含义
例1:cout<< *p++实际执行的是将P记录的地址中保存的值打印出来,然后再将P的值(一个地址)加一个n类型所占的字节数,相当于 *(p++);也相当于(1)*p;(2)执行本行语句其他操作;(3)p=p+1;例2:++p实际执行的是先取出p指向的地址中保存的值,再将它自增一,就相当于执行了++n,并没有改变p的值,也就是p指向的地址值没有变化,相当于p=(*p)+1;例3: 请注意右自增运算符得到的是一个右值,不能对其进行取地址等左值操作...原创 2021-04-08 10:50:53 · 2353 阅读 · 0 评论 -
C++ 模板
模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。 模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。一、函数模板:如果对于一组函数,他们执行的操作完全一致,参数列表结构也一致,只有某些函数的数据类型不一致,那么我们可以把他们定义成函数模板。1.函数模板的定义template <typename T, typename T2>T Max(const T& parm1, const T& pa原创 2021-04-01 15:20:51 · 1229 阅读 · 0 评论 -
Linux 下的 system() 函数的理解
1.头文件:<stdlib.h>2.作用:用于调用/bin/sh(一般是一个软链接,指向bash等shell程序) 来执行一条命令。3.函数原型:int system(const char* command);其中参数command就是需要读取的命令,函数的返回值表示执行结果,成功一般是0,否则表示失败。4.实现原理:system实现的基本原理是fork()一个新的进程出来来执行shell命令,具体过程可以总结为:(1)fork一个子进程出来(2)在子进程中调用execl函数来拉起原创 2021-03-30 17:14:35 · 4213 阅读 · 1 评论 -
在类声明中声明另外一个类
类声明中也是可以声明类的。但是内部声明的这个类的作用域只在这个外层类内声明内部类的后面的部分才可见。也就是说,从class B开始,B的作用域开始,但是A的声明结束后,B的作用域也就结束了。#include <iostream>using namespace std;class A{public: B b0; //这里的声明是错误的 class B { public: void fun(void) {原创 2021-03-30 11:13:16 · 2257 阅读 · 0 评论 -
一个程序在main()函数之前也可能会有函数的执行
例如,存在一个类的全局对象,或者存在一个普通全局变量,但其使用了一个函数来为其赋值,这种情况下就会先执行类对象的构造函数和全局变量的赋值函数请看以下代码:#include <iostream>using namespace std;int fun(int n){ cout<<n*n<<endl; return n*n;}int m = fun(10);class MyTest{ public: MyTest()原创 2021-03-29 11:59:01 · 223 阅读 · 0 评论 -
sizeof()运算符返回值可视为常量
这个数组声明的写法是正确的int Arr[sizeof(char)*10]; 因为sizeof()这个运算符是在编译阶段就确定下来了它的结果,所以它是一个常量,对于一些编译器,在编译阶段甚至会将sizeof()直接优化为一个常量。例如char arry[2];char arry2[sizeof(arry)]; //正确的声明,sizeof(arry)是常量值。...原创 2021-03-29 11:51:38 · 399 阅读 · 0 评论 -
C++ 异常处理注意事项总结
0.概述异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。在C++中我们可以使用关键字throw、try、catch来抛出和捕获异常进行特定的处理。1.详解3个关键字1.1 throw:(1) 我们可以使用 throw 语句在代码块中的任何地方抛出异常。throw 语句的操作数可以是任意的表达式,表达式的结果的类型决定了抛出的异常的类型。例如一个除法计算函数的除数为0的处理为double division(int a, int b)转载 2021-03-23 09:46:13 · 375 阅读 · 0 评论 -
C++类的继承特性知识点笔记
C++中使用继承可以定义相似类型的类并对其相似关系建模。1.声明基类和派生类class A{ ...public: static void func(); static int number;};class B{ ...};class C: public A, protected B{ ...};int A::number = 10;2.基类通常都会定义一个虚析构函数3.基类会将成员定义为两种类型:一种是希望派生类直接原创 2021-03-17 15:12:46 · 306 阅读 · 0 评论 -
给代码添加注释的时候的一个好习惯
给代码添加注释的时候的一个好习惯1.描述一个代码块的功能或者一个模块的功能时将注释放在这个代码块上部,代码块结束后加空行与其他块分隔一下2.描述一个块中的某条语句的作用和注意事项时,直接在这个语句的后面加注释就可以了例:#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include <arpa/inet.h>#include &原创 2021-03-16 10:06:09 · 183 阅读 · 0 评论 -
关于extern “C“ {} 的理解
关于extern “C” {} 的理解我们经常在代码中看到这样的声明:#ifdef __cplusplusextern “C” {#endif…#ifdef __cplusplus}#endif其中#ifdef __cplusplus是用来判断文件是否为cpp文件,这个很好理解,那被它限定的extern “C” { }又是什么意思呢?其实这个extern “C” { }就是表达了两个含义(1)extern表示{ }内声明的函数和变量是外部变量和函数(见注释1);(2)“C”表示{ }原创 2021-03-16 09:39:05 · 4012 阅读 · 0 评论