C++
文章平均质量分 78
kannju
这个作者很懒,什么都没留下…
展开
-
extern "C" :
<br />1)范围:C++的语法,C中编译会报错 <br /><br />2) 作用: <br />a)告诉编译器这是一个全局的 <br />b)告诉编译器产生类C的符号(int foo(int) c:_foo c++:_foo_int) <br /><br />3) 常见写法: <br />extern "C" int foo(int a); <br />extern "C" int bar(); <br /><br />extern "C" <br />{ <br />int foo(); <br /转载 2010-11-05 21:16:00 · 411 阅读 · 0 评论 -
浅谈模板函数的重载解析优先顺序
函数模板可以被重载、显式特化重载、普通函数重载。如以下函数模板的重载声明: namespace LDQ_TEST { //函数模板定义 template T sum( T, int ); //T == double的显式特化 template( doubl原创 2011-09-01 20:47:27 · 3307 阅读 · 1 评论 -
类模板与模板类
1.类模板与模板类的概念 ⑴ 什么是类模板 一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)。 如果一个类中数据成员的数据类型不能确定,或者是某转载 2011-09-01 19:36:08 · 501 阅读 · 0 评论 -
引用计数
引用计数是这样一个技巧,它允许多个有相同值的对象共享这个值的实现。这个技巧有两个常用动机。第一个是简化跟踪堆中的对象的过程。一旦一个对象通过调用new被分配出来,最要紧的就是记录谁拥有这个对象,因为其所有者--并且只有其所有者--负责对这个对象调用delete。但是,所有权可以被转载 2011-09-01 10:31:24 · 507 阅读 · 0 评论 -
GCC下宏扩展后的++i
听讨论的时候,遇到一题是关于++i*++i的——这样的讨论意义不大,却也可以一窥编译器对相关问题的处理。 原题如下 相关代码说明如下 #include stdio.h> #define POWER(X) X*X int main() { int原创 2011-08-31 20:53:23 · 522 阅读 · 0 评论 -
函数模板和模板函数
1.函数模板的声明和模板函数的生成 1.1函数模板的声明 函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函数的函数体重复设计。它的最大特点是把函数使用的数据类型作为参数。 函数模板的声明形式为: temp转载 2011-09-01 19:53:03 · 718 阅读 · 0 评论 -
boost pool, object_pool实现
一: class simple_segregated_storage; boost/pool/simple_segregated_storage.hpp simple_segregated_storage (以下用SSS替代)实现一个单向链表, 链表的每个节点是一个固定大小转载 2011-09-01 16:39:02 · 1465 阅读 · 0 评论 -
C++对象布局及多态实现的探索
虚函数的类的对象布局(1) 如果类中存在虚函数时,情况会怎样呢?我们知道当一个类中有虚函数时,编译器会为该类产生一个虚函数表,并在它的每一个对象中插入一个指向该虚函数表的指针,通常这个指针是插在对象的起始位置。所谓的虚函数表实际就是一个指针数组,其中的指针指向真正的转载 2011-09-01 15:40:47 · 515 阅读 · 0 评论 -
C++ Primer学习笔记 多重继承与虚继承
http://www.cublog.cn/u/18517/showart_252162.html 题记:本系列学习笔记(C++ Primer学习笔记)主要目的是讨论一些容易被大家忽略或者容易形成错误认识的内容。只适合于有了一定的C++基础的读者(至少学完一本C++教程)。转载 2011-09-01 14:51:33 · 519 阅读 · 0 评论 -
用 C++ 设计一个不能被继承的类
分析:这是Adobe 公司 2007 年校园招聘的最新笔试题。这道题除了考察应聘者的 C++ 基本功底外,还能考察反应能力,是一道很好的题目。 在Java 中定义了关键字 final ,被 final 修饰的类不能被继承。但在 C++ 中没 有final转载 2011-09-01 14:01:01 · 385 阅读 · 0 评论 -
内存管理内幕--Jonathan Bartlett (johnnyb@eskimo.com), 技术总监, New Media Worx--
Jonathan Bartlett (johnnyb@eskimo.com), 技术总监, New Media Worx 2004 年 11 月 29 日 本文将对 Linux™ 程序员可以使用的内存管理技术进行概述,虽然关注的重点是 C 语言,但同样也适用于其他语言原创 2011-09-01 12:48:32 · 753 阅读 · 0 评论 -
ZZ讲讲volatile的作用
<br />一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: <br /> 1). 并行设备的硬件寄存器(如:状态寄存器) <br /> 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) <br /> 3). 多线程应用中被几个任务共享的变量原创 2011-02-19 16:14:00 · 616 阅读 · 0 评论 -
函数指针与typedef
<br />于C++中函数指针的使用(包含对typedef用法的讨论) <br />(一)简单的函数指针的应用。<br />//形式1:返回类型(*函数名)(参数表) <br />char (*pFun)(int); <br />char glFun(int a){ return;} <br />void main() <br />{ <br /> pFun = glFun; <br /> (*pFun)(2); <br />} <br /> 第一行定义了一个指针变量pFun。首先转载 2010-11-10 11:57:00 · 385 阅读 · 0 评论 -
extern用法详解(转)
<br /><br />1 基本解释<br /> extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。<br /> 另外,extern也可用来进行链接指定。<br />2 问题:extern 变量<br /> 在一个源文件里定义了一个数组:char a[6];<br /> 在另外一个文件里用下列语句进行了声明:extern char *a;<br /> 请问,这样可以吗? <br /> 答案与分析:<br /> 1)、不原创 2010-11-05 21:22:00 · 356 阅读 · 0 评论 -
extern "C" :
<br />1)范围:C++的语法,C中编译会报错 <br /><br />2) 作用: <br />a)告诉编译器这是一个全局的 <br />b)告诉编译器产生类C的符号(int foo(int) c:_foo c++:_foo_int) <br /><br />3) 常见写法: <br />extern "C" int foo(int a); <br />extern "C" int bar(); <br /><br />extern "C" <br />{ <br />int foo(); <br /转载 2010-11-05 21:16:00 · 371 阅读 · 0 评论 -
C++ 中 extern "C" 用法小结
<br /><br />在C++中 extern "C" 的两种用法<br />1. 如果要在C++程序中调用C语言写的函数, 在C++程序里边用 extern "C" 修饰要被调用的这个C程序,告诉C++编译器此函数是C语言写的,是C语言编译器生成的,调用他的时候请按照C语言习惯传递参数等。如: //在C++程序里边声明该函数<br /> extern "C" int strcmp(const char *s1, const char *s2);<br /><br />也可以这样原创 2010-11-05 20:27:00 · 403 阅读 · 0 评论 -
sizeof(struct)
<br /><br />struct {<br /> signed int bit0:1;<br /> signed int bit1:1;<br /> signed int bit2:1;<br /> signed int bit3:1;<br /> signed int bit4:1;<br /> signed int bit5:1;<br /> signed int bit6:1;<br /> signed int bit7:1;<br />}bits;<br原创 2010-11-05 19:49:00 · 597 阅读 · 0 评论 -
C与C++中struct的区别,以及C++中struct与Class的区别
<br /><br />C中struct只可以放成员变量,没有访问权限限制,外部可以访问;<br />C++中struct用法对C中struct进行了扩展,功能与class类似,可以放成员函数,可以被继承,所有成员数据默认权限为public,struct不可以定义无参的构造函数。<br />C++中Class默认权限为private,可以定义无参构造函数,struct主要在这些方面与其不同。<br /> <br /> <br />下面是段程序<br /> <br />#include<iostream><b原创 2010-11-05 18:57:00 · 359 阅读 · 0 评论 -
C库源代码实现: strtok
NetBSD实现: 1: char* strtok_r(char* string_org,const char* demial,char** last) 2: { 3: const char* spanp; //span表示分隔,p表示指针 4:原创 2011-09-02 10:57:15 · 1196 阅读 · 0 评论