C++杂记_博客
紫云的博客
just go
展开
-
重载指针运算符
#include #include using namespace std;//指针间接引用运算符一定是一个成员函数。它有着额外的,非典型的限制:它必须返回一个对象(或引用),该对象也有一个指针间接引用运算符class Ob {public: void h() { cout << "4556" << endl; }};class Obj { Ob k;public:原创 2013-11-03 19:12:14 · 5057 阅读 · 0 评论 -
malloc和定位new表达式
#include #include using namespace std;class xiaok{public: int k; int a; void han(){cout<<k<<a<<endl;}};int main(int argc, char const *argv[]){ xiaok *p=(xiaok*)malloc(sizeof(xiaok)); new(原创 2015-06-03 20:13:03 · 731 阅读 · 0 评论 -
C++模板中的静态
#include #include using namespace std;templateclass xiaok{public: static void han(){cout<<"xiao"<<endl;} static void han1(); static int i; // static const int ii=0; //vc.6报错};int xiao原创 2015-06-07 09:49:35 · 1354 阅读 · 0 评论 -
模板类里的friend方法
/*1.模板类里的friend函数的说明和定义2.所有一元运算符 建议成员= ( ) [ ] –> –>* 必须是成员+= –= /= *= ^= 建议成员&= |= %= >>= <<= 建议成员所有其他的二元运算符 建议非成员(非成员应该类内定义,见代码。)*/#include #include using namespace std;原创 2015-06-10 16:20:24 · 1800 阅读 · 0 评论 -
头文件里不要有全局定义
//由于一个头文件可能会被多次包含,所以有全局定义的情况下,在链接会出现重定义错误//全局定义不应该放在头文件里,应该放入其相应的实现文件中。//如果一个头文件里的全局定义被多个cpp文件所使用,则只有一个文件可以include这个头文件,其他只能是extern这些全局声明。#ifndef LOCK_H#define LOCK_Hvoid lock();void unlock()原创 2015-06-26 10:08:46 · 988 阅读 · 0 评论 -
c++默认参数
#include using namespace std;void f(int x, int a= 3, float b = 1.1);int main() { f(0); return 0;} ///:~void f(int x, int a= 3, float b= 1.1)/*error C2572: 'f' : redefinition of default pa原创 2015-04-10 21:37:43 · 638 阅读 · 0 评论 -
c++ good() eof() fail() bad()
// fortest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include #include #include #include int main(){ std::istringstream is("123"); std::cout << "-------------原创 2015-09-11 10:06:21 · 3348 阅读 · 1 评论 -
零长度数组的妙用
转自 http://blog.chinaunix.net/uid-20196318-id-28810.html零长度是指定义数组时,指定其长度为0(如int arr[0];),这样的数组不占用实际的空间,但能通过数组名访问到其指向的地址。如下例所示:#include stdlib.h>#include stdio.h>struct device{ in转载 2015-09-25 18:11:37 · 420 阅读 · 0 评论 -
VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径
来源:http://www.cnblogs.com/lidabo/archive/2012/05/29/2524170.html说明$(RemoteMachine)设置为“调试”属性页上“远程计算机”属性的值。有关更多信息,请参见更改用于 C/C++ 调试配置的项目设置。$(References)以分号分隔的引用列表被添加到项目中。$(Confi转载 2015-09-21 12:53:39 · 402 阅读 · 0 评论 -
printf的格式控制字符串
printf(“格式控制字符串”, 输出表列)其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如:“%d”表示按十进制整型输出;“%ld”表示按十进制长整型输出;“%c”表示按字符型输出等。非格式字符串原样输出,在显示中起提示作用。输原创 2015-09-23 10:09:57 · 10371 阅读 · 0 评论 -
typedef 定义函数指针
关于C++中函数指针的使用(包含对typedef用法的讨论) (一)简单的函数指针的应用。 //形式1:返回类型(*函数名)(参数表) char (*pFun)(int); char glFun(int a){ return;} void main() { pFun = glFun; (*pFun)(2); } 第一行定义了一个指针变量pFu原创 2017-04-18 11:38:51 · 415 阅读 · 0 评论 -
lua闭包
闭包的概念在Lua中,闭包(closure)是由一个函数和该函数会访问到的非局部变量(或者是upvalue)组成的,其中非局部变量(non-local variable)是指不是在局部作用范围内定义的一个变量,但同时又不是一个全局变量,主要应用在嵌套函数和匿名函数里,因此若一个闭包没有会访问的非局部变量,那么它就是通常说的函数。也就是说,在Lua中,函数是闭包一种特殊情况。另外在Lua的C原创 2017-04-16 10:59:54 · 395 阅读 · 0 评论 -
c++多重继承一个小点
#include class tt{public: tt(){} virtual void test() = 0; virtual ~tt(){}; /* data */};class tt1 : public tt{public: tt1(){} virtual void test(原创 2017-04-20 17:05:41 · 303 阅读 · 0 评论 -
c函数赋值
#include using namespace std;void mf(){ static i=0; cout<<i++;}void (* set_function( void (*f)() ) )(){ f(); (*f)(); return f;//分开看,就不晕了}void set_function22( void (*f)() ){ f()原创 2015-05-28 13:11:38 · 1461 阅读 · 0 评论 -
对象的位拷贝形式
传值方式是位拷贝形式,包括对象不调用构造函数,但会调用其析构函数如果设计了拷贝函数,当从现有的对象创建新对象时,编译器将不使用位拷贝。编译器总是调用我们的拷贝构造函数(c++编译器自动创建的拷贝构造函数也是位拷贝的,是不安全的。所以一般自己创建。)又一个简单的技术防止通过按值传递方式传递:声明一个私有拷贝构造函数。甚至不必去定义它,除非成员函数或友元函数需要执行按值传递方式的传递。如果用户原创 2015-04-17 16:29:18 · 740 阅读 · 0 评论 -
多继承的疑惑
#include using namespace std;class a{public: virtual void kk();//{}//虚函数是有函数体的};class P :virtual public a{public: virtual void kk(){cout<<"pppppp";}};class M :virtual public a{public:原创 2015-04-16 11:03:04 · 579 阅读 · 0 评论 -
C++成员函数的重载、覆盖与隐藏
成员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防。成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖:派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;转载 2013-11-04 16:47:49 · 611 阅读 · 0 评论 -
C++自动类型转换
自动类型转换:a.构造函数转换 b.运算符转换。构造函数转换:如果定义一个构造函数,它把另一个类型对象或引用作为它的单个参数,那么这个构造函数允许编译器执行自动类型转换。class One {public: One() {}};class Two {public: Two(const One&) {}//one->two;};void f(Two) {}int mai原创 2014-01-03 20:14:37 · 3330 阅读 · 0 评论 -
int *a; int &a; int & *a; int * &a
int i;int *a = &i;//这里a是一个指针,它指向变量iint &b = i;//这里b是一个引用,它是变量i的引用,引用是什么?它的本质是什么?下面会具体讲述int * &c = a;//这里c是一个引用,它是指针a的引用int & *d;//这里d是一个指针,它指向引用,但引用不是实体,所以这是错误的分析此类语句时,先看var前紧跟的是什么原创 2014-01-12 11:28:14 · 701 阅读 · 0 评论 -
c++字符串详解(转)
http://www.cnblogs.com/chuncn/archive/2009/02/13/1390176.html之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行转载 2014-02-23 19:17:29 · 658 阅读 · 0 评论 -
C++输入一行字符串
转http://www.wutianqi.com/?p=1181 一.对于字符数组:方法一:getline()读入整行数据,它使用回车键输入的换行符来确定输入结尾。调用方法: cin.getline(str, len);第一个参数str是用来存储输入行的数组名称,第二个参数len是要读取的字符数。12345678910转载 2014-02-23 19:41:31 · 2781 阅读 · 0 评论 -
c++类相互赋值!
#include#includeclass A{public:int aa;A(int a){aa=a;}};void main(){A b=A::A(5);///使用构造函数okcout}原创 2014-03-03 18:44:54 · 1749 阅读 · 0 评论 -
c++注意点
#include using namespace std; struct Foo{ Foo() {} Foo(int) {} void fun() {cout<<"Foo类";} }; int main() { Foo a(10);//使用带int参数的构造函数a.fun();//Foo b();//这里其实是声明了一个函数b();Foo c;//使用无参数的原创 2014-12-27 22:11:12 · 587 阅读 · 0 评论 -
C++成员函数的重载、覆盖与隐藏22
#include class Base{public:virtual Base* f(Base&){ cout return this;}};class Derived : public Base{public:Derived* f(Derived&){ cout return this;}};void main(void)原创 2013-11-14 13:34:41 · 718 阅读 · 0 评论 -
自定义异常
//throw yichang();//此时必须得加上括号//作用:(均在catch{}里体现) // 1.报告错误 // 2.修正错误#include #include using namespace std;class yichang { string s;public: yichang(string str="自定义异常\n"):s(str){} void wha原创 2015-01-23 20:34:10 · 779 阅读 · 0 评论 -
MFC函数之BitBlt
// Cgame123View 绘制void Cgame123View::OnDraw(CDC* pDC){ Cgame123Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此处为本机数据添加绘制代码 CRect Rect; GetClientRect(&Rect);原创 2015-01-24 17:00:17 · 18776 阅读 · 1 评论 -
智能指针类
//智能指针类//----------------------------------------//1.基数据放在使用计数类中//实际类指向->使用计数类->基数据//使用计数类class U_ptr{ friend class Hasptr;//友元类 int *ip;//这个就是要保护的基数据 size_t use; U_ptr(int *p):ip(p),use(1){原创 2015-03-18 18:06:40 · 596 阅读 · 0 评论 -
关于c++map
1.只有重载class C{public: int i; string str; bool operator { return i }}; 2.通过key获取value的方法在map中,由key查找value时,首先要判断map中是否包含key。如果不检查,直接返回map[key原创 2017-04-24 13:24:30 · 424 阅读 · 0 评论