C/C++
mooncreek
官行私曲,失时悔。富不俭用,贫时悔。
艺不少学,过时悔。见事不学,用时悔。
醉发狂言,醒时悔。安不将息,病时悔。
展开
-
C++友元函数友元类
C++面向对象的特性,需要很多特殊的设计,来满足各种使用需求,比如:1。类的实例化对象希望共享一些属性和方法,类似于C语言的公共头文件,而设计了静态成员,区别于C语言的地方是,静态数据成员必须进行初始化。2。针对指向常对象的指针和指向对象的常指针,而设计了常对象,常成员,通过常成员函数来访问常数据成员。3。针对基类指针根据派生类不同而希望实现多种形态的需求,设计了虚函数。那么...原创 2020-03-07 12:13:47 · 316 阅读 · 0 评论 -
C++静态数据的初始化
in$ cat static.cpp #include <iostream> using namespace std; class ClassA { public: ClassA() { cout << "ClassA Constructor!" << endl; } void Func() { ...原创 2020-03-07 12:12:32 · 1678 阅读 · 0 评论 -
linux管道pipe父子进程通信的示例
父进程打开的文件描述符在子进程仍然保持打开,文件描述符的引用计数+1,不仅如此,父进程用户根目录、当前目录等变量的引用计数也会+1.即使调用exec函数,文件描述符也不会关闭,除非设置了SOCK_CLOEXEC属性。#include <stdio.h>#include <stdlib.h>#include <string.h>#include &...原创 2020-03-07 12:08:25 · 545 阅读 · 0 评论 -
C++ STL remove和erase的区别及使用
remove是一个函数,头文件是algorithm;erase是每个容器的成员函数。在介绍之前先介绍v.begin()和v.end():v.begin()指的是第一个元素;v.end()值得最后一个元素的下一个位置;vector<int>::iterator it;it=remove(v.begin(),v.end(),4);//删除值为4的元素。每删除一...原创 2020-03-07 12:04:51 · 1654 阅读 · 0 评论 -
从汇编语言角度理解C语言栈帧
在C语言的调用约定中,栈是现实函数的局部变量、参数和返回值地址的关键因素。函数执行前、执行过程以及执行后程序分别干了什么事情?在整个过程中唯一不变的就是基址指针寄存器,位于返回地址和函数变量之间,通过+N*4(%ebp)可以访问函数参数和返回地址,通过-N*4(%ebp)可以访问局部变量。函数执行前:程序将函数的参数逆序压栈,接着发出一条Call指令,表明程原创 2016-01-08 13:46:06 · 1586 阅读 · 1 评论 -
OpenGL,glx,glaux,glut,freeglut,glew,glfw,mesa
转自:http://www.lai18.com/content/1297257.html一、OpenGLOpenGL函数库相关的API有核心库(gl),实用库(glu),辅助库(aux)、实用工具库(glut),窗口库(glx、agl、wgl)和扩展函数库等。gl是核心,glu是对gl的部分封装。glx、agl、wgl 是针对不同窗口系统的函数。glut是为跨平台的OpenGL转载 2016-07-16 15:34:29 · 1991 阅读 · 0 评论 -
C++设计模式(一)单例模式
C++单例模式也称为单件模式、单子模式。使用单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出等。单例模式有许多种实现方法,a. 懒汉式:使用的时候才创建,多线程访问的时候线程不安全(双检锁)b. 饿汉式:类文件加载的时候已经创建好了对象,如果对象一直没有使用,则类对象浪费空间特点与选择:如果要进...原创 2018-08-04 13:24:10 · 6134 阅读 · 3 评论