c/c++
文章平均质量分 72
yanziguilai
这个作者很懒,什么都没留下…
展开
-
void * 指针
#includeusing namespace std;int main(){void *f;int i=1,*p;f=&i;cout<<"1 f is "<<f<<endl;p=(int *)f;f=p;cout<<"&i is "<<&i<<endl;cout<<"p is "<<p<<" "<<*p<<endl; /*--------重点--------*/cout<<"2 f is"<<f原创 2013-06-18 10:33:26 · 781 阅读 · 0 评论 -
函数指针学习(还没明白具体含义难点)
#include #include #include #include #include "test.h"using namespace std;//*********************************************************************************//FUNCTION:void print(){cout << "print is ca原创 2013-10-10 11:05:06 · 617 阅读 · 0 评论 -
realloc
realloc 原型:extern void *realloc(void *mem_address, unsigned int newsize); 用法:#include 有些编译器需要#include 功能:改变mem_address所指内存区域的大小为newsize长度。 说明:如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。 当内存不再使用时,应使转载 2013-10-10 13:12:41 · 681 阅读 · 0 评论 -
c++ 虚函数
今天写程序,虚函数和虚析构函数的知识模糊不清了,就自己写个测试回顾一下#pragma once#include #include #include namespace WYP{ class CBase { public: CBase() : m_BaseX(0), m_ptr(NULL) {std::cout << "CBase() is call原创 2013-10-31 22:57:32 · 675 阅读 · 0 评论 -
模板类的定义和实现可以不在同一个文件中
写c++程序时我们经常会把函数的定义写在xxx.h中,把函数的实现写在xxx.cpp, 但是当我们写带模版的函数和类时,这样写就会出现问题,如下:stack.h//stack.h#ifndef STACK_HPP#define STACK_HPP#include #include template>class CStack{public: void push(co原创 2014-07-13 16:35:48 · 2237 阅读 · 0 评论 -
写代码时常见的错误
实验室有要做阶段练习题了,其中有一道改bug题:#include #include int main(int, char**){ std::vector** ppRandomData = distributeRandomInt(100); for (unsigned int i=0; i<1000; i++) { if (ppRandomData[i]) { std:原创 2014-07-11 23:18:17 · 1296 阅读 · 0 评论 -
c++内存泄漏处理(积累)
写c++程序时,经常会出现内存泄漏的问题原创 2014-08-08 21:36:25 · 1414 阅读 · 1 评论 -
c++未解之谜
#include#includeusing namespace std;char * reverse_str(char* str){ if(str==NULL) return str; char *bstr=str; char *estr=str; char ch; while(*estr!='\0')estr++; estr--; while(bstr原创 2013-07-02 20:14:08 · 850 阅读 · 0 评论 -
c结构体里的数组与指针
/*访问成员数组名其实得到的是数组的相对地址,而访问成员指针其实是相对地址里的内容*/struct buf_str{int length;char buf[0];};struct foo{buf_str* pbuf;};void test_funny(){foo f = {0};printf("%x\n"原创 2014-08-16 11:05:32 · 1081 阅读 · 0 评论 -
std::unique与结构体
#include#include#includestruct Pair{ int Key; float Value; bool operator bool operator==(const Pair& vp) { return (*this).Key==vp.Key;}};int main(int, char**){ std::vector ve原创 2013-07-06 15:59:13 · 3001 阅读 · 0 评论 -
全局变量,继承,虚函数,构造函数和析构函数的调用过程
/*全局变量,继承,虚函数,构造函数和析构函数的调用过程。。。///百度里发现的一个好贴,不敢独自享用,分享一下。。。*/#include class Value{ public: Value(int nVal) { m_nVal = nVal; printf("Call Value::Value(int nValue)\n"); } ~Value(转载 2013-07-01 15:39:32 · 1344 阅读 · 0 评论 -
静态对象的析构
#include#includeclass staticClass{public: staticClass() { printf("Initialize!\n"); // std::cout } ~staticClass() { printf("Clear up!\n"); // std::cout }};stati原创 2013-07-01 15:35:12 · 1755 阅读 · 0 评论 -
const 思考
1、什么是const 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:)2、为什么引入const? const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。3、cons有什么主要的作用? (1)可以定义const常量,具有不可变性。 例如转载 2013-07-06 14:22:15 · 637 阅读 · 0 评论 -
sstream与模版函数
实现一个类型转化程序://文件名 p3_8.h#ifndef P3_8_H#define P3_8_H#include#includetemplateT fromString(const std::string& s)//实现将string转化成T类型{ std::istringstream is(s); T t; is>>t; return t;原创 2013-06-23 10:23:52 · 739 阅读 · 0 评论 -
c++拷贝构造函数的禁用 与 友元函数
#include#include/* 如果想禁用复试,可以把类的拷贝构造函数的访问权限设置为私有的,但是类的友元和成员可以访问 */struct No_Name{No_Name(): pstring(new std::string), i(0), d(0) {}No_Name(const std::string &str, int ii, double dd){pstring = new std:原创 2013-07-10 17:31:03 · 1669 阅读 · 0 评论 -
strcpy
已知strcpy函数的原型是char* strcpy(char* strDest,const char* strSrc);1.不调用库函数,实现strcpy函数2.解释为什么要返回char*;1.strcpy的实现代码char* strcpy(char* strDest,const char* strSrc){ if((strDest == NULL) || (st转载 2013-06-28 10:09:36 · 744 阅读 · 0 评论 -
函数模版与模版的特化
如果这样写:程序运行结果是过的#include#include#includeusing namespace std;namespace Myfunc{ template T min(const T&t1,const T&t2) { return t1 } template const char* min(const char* const&原创 2013-06-27 21:00:59 · 680 阅读 · 0 评论 -
安全指针使用的例子 (也有问题)
这是c++primer中的一个例子,但还会有问题出现#includeusing namespace std;class HasPtr;class U_Ptr{ friend class HasPtr; int *ip; size_t use; U_Ptr(int *p): ip(p), use(1) {} ~U_Ptr() { delete ip; }}原创 2013-07-15 11:32:05 · 973 阅读 · 0 评论 -
const笔记
#include/*-------const的作用-----------*/int& fun(int i){ return i;}const& int fun(double i){ return i;}int main(){ int i=2; /*--------------有时候我们会有意或无意的改变函数的返回值-----------*/原创 2013-07-15 11:23:30 · 654 阅读 · 0 评论 -
stl count_if()函数
6.用STL的通用算法count_if()来统计list中的元素个数 count_if()是count()的一个更有趣的版本。他采用了STL的一个新组件,函数对象。count_if() 带一个函数对象的参数。函数对象是一个至少带有一个operator()方法的类。有些STL算法作为参数接收函数对象并调用这个函数对象的operator()方法。 函数对象被约定为STL算法调转载 2013-06-29 11:01:56 · 1231 阅读 · 0 评论 -
stl lower_bound 和 upper_bound
函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置举例如下:一个数组number序列为:4,10,11,30,69,70,96,100.设要插入数字3,9,111.pos为要插入的位置的下标则pos = lower_bound( number, number + 8,原创 2013-06-29 14:43:39 · 809 阅读 · 0 评论 -
继承与派生——虚继承
虚基类的概念 一般,不希望在一个派生类中存在某个公共基类的多个同名的成员变量。虽然也可以通过在成员变量名前面加上“类名::”消除其二义性,但解决这个问题的最好办法是使用虚基类。虚基类方法可以保证在任何一个存在公共基类的派生类中,不会存在一个以上的同名成员变量。 所谓虚基类,就是说一个类层次中,如果某个派生类存在一个公共基类,将这个基类设置为虚基类,这时从不同的路径继原创 2013-07-03 09:37:12 · 1314 阅读 · 0 评论