![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 64
ungoneless
这个作者很懒,什么都没留下…
展开
-
C++派生类构造函数调用顺序
C++派生类构造函数调用顺序(详解)我们来看下面一段代码: class B1 { public: B1(int i) {cout }; class B2 { public: B2(int j) {cout }; class B3 { public: B3( ){cout }; class C:转载 2015-09-25 12:10:47 · 933 阅读 · 0 评论 -
判断文件结束的几种方法和eof()函数
看下面一段代码:ofstream ofs("a.txt");int n = 1;while (--n) { //不进入循环体 ofs<<n<<"\t";}ofs.close();int x=5,z = 0;ifstream ifs("a.txt"); while (!ifs.eof()) { cout<<ifs.eofbit<<endl; //输出1原创 2016-04-29 13:07:16 · 14961 阅读 · 0 评论 -
用指针实现的二维数组创建及赋值
用指针实现的二维数组创建及赋值第一种:int m = 3;int (*p)[5] = new int[m][5]; // 可以理解为p是一个指向含有5个int型元素的型数组的指针for (int i=0;ifor (int j=0;jp[i][j] = i+j;}}for (int i=0;ifor (int j=0;jcout}c原创 2016-04-28 18:50:58 · 5958 阅读 · 0 评论 -
函数调用的本质与函数指针
typedef 声明函数指针的作用:typedef void(*Fun)(void); ---------------》》 这种形式声明函数指针的类型,可以多次使用。如果得到函数的地址就可以直接用Fun强制类型转换成这种类型函数的指针。void (*pFun)(void); ------------------》》 这种形式直接声明函数指针,是一个具体的指针。原创 2016-04-28 13:28:01 · 820 阅读 · 0 评论 -
继承中多态的核心---虚函数表
在继承中多态是通过父类型指针指向子类对象,并调用虚函数实现的。实现这一行为的核心就是虚函数表。虚函数表存在于类对象中,有虚函数的类的对象中就有虚函数表。同时虚函数表在对象的最前面的位置(准确来说是指向虚函数表的虚函数表指针)。存在的这个指针(4字节)指向一张虚函数表,虚函数表中存放各个虚函数的指针,指向各个虚函数。所以获取虚函数表的地址是class Base { publi原创 2016-04-21 17:13:09 · 472 阅读 · 0 评论 -
类中取地址的相关操作------int*与&
class C{public:int a;int b;C(int fi, int se){a = fi;b = se;}};ostream& operatorosreturn os;} 令 C c(1,2);coutcoutcoutcout那么会得到结果是:0029F9B40029F9B41 2原创 2016-04-28 11:19:29 · 1320 阅读 · 0 评论 -
C++派生类构造函数调用顺序
我们来看下面一段代码: class B1 {public:B1(int i){cout }; class B2 {public:B2(int j) {cout }; class B3 { public: B3( ) {cout }; class C: public B2, public B1, publi原创 2016-04-27 21:34:02 · 1023 阅读 · 1 评论 -
C++对象赋值与C#对象赋值----C++与C#值传递与引用传递浅析
在C#中,看下面一段程序:class A { public int value; public A(int x) { value = x; } public void set(int x) { value = x;原创 2016-04-27 21:13:00 · 3530 阅读 · 0 评论 -
多线程几种同步方式
1.事件 多线程之间由事件驱动2.互斥区 访问时加锁3.临界区 线程访问时加锁4.信号量 信号量可以实现几个线程对应一个信号量工作原创 2015-09-25 16:57:17 · 243 阅读 · 0 评论 -
结构体中的位域及小端问题
1写出下列程序在X86上的运行结果1234567891011121314151617structmybitfields{ unsigned s原创 2015-10-07 10:48:50 · 628 阅读 · 0 评论 -
std::auto_ptr boost::shared_ptr智能指针的应用
C++ 智能指针详解 一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_p转载 2015-10-06 10:40:24 · 514 阅读 · 0 评论 -
static_cast转换类型输出
由于C++标准库中I/O类对#include using std::cout;using std::endl; int main(){ const char *pszStr = "this is a string"; // 输出字符串 cout原创 2015-10-05 19:00:36 · 371 阅读 · 0 评论 -
strcat
strcat原型extern char *strcat(char *dest,char *src);用法#include 在C++中,则存在于头文件中。功能把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')。说明src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向de原创 2015-09-28 21:56:36 · 468 阅读 · 0 评论 -
构造函数初始化列表中成员变量必须初始化的几种情况
有一个类A,其数据成员如下:12345678910classA {...private: inta;public: constint b; float* &c;原创 2015-09-28 21:57:12 · 7502 阅读 · 1 评论 -
STL vector中的元素删除
删除vector中的元素,最容易的方法就是使用vector的erase()函数。vector vec;for ( vector::iterator iter = vec.begin(); iter! = vec.end();){ if(某条件成立) iter = vec.erase(iter); else iter ++;转载 2015-09-25 12:46:28 · 474 阅读 · 0 评论