书法字典:https://www.shufadict.com

随笔分类 -  C/C++

C++默认构造函数
摘要:默认构造函数默认的构造函数是指为所有参数都提供了默认值的构造函数,通常是指无参的构造函数。比如下面的类Test,它的默认构造函数就是Test()。class Test{public: Test(){} // default constructor} ;如果你没有为你的类提供任何构造函数,那么编... 阅读全文

posted @ 2012-10-02 15:21 翰墨小生 阅读(24058) 评论(4) 推荐(5) 编辑

extern “C”总结
摘要:经常看到如下代码:#ifdef _cplusplusextern "C" {#endif#include "XXX.h"#ifdef _cplusplus}#endif解释:extern "C"的作用是,告诉C++编译器,下面的代码按照C的方式进行编译,说白了,不要对这些函数进行名字重整(funct... 阅读全文

posted @ 2010-12-24 21:02 翰墨小生 阅读(6346) 评论(4) 推荐(4) 编辑

整数超出范围时如何表示?
摘要:类型都是有表示范围的,整型也不例外 在32位系统上int占四个字节内存,能表示的整数范围是-231--231-1 (最高位是符号位) unsigned int 也占四个字节内存,能表示的整数范围是0—232-1 (无符号位) 如果某个整型变量超过了其类型所能表示的范围,编译器该如何解释这个变量呢? 比如定义如下一个变量 char ch = 128 ; 由于char 是8bit 整型,所能表示的范围... 阅读全文

posted @ 2010-12-24 20:17 翰墨小生 阅读(7760) 评论(0) 推荐(0) 编辑

判断文件是否存在(C Version)
摘要:code from OgreFor more about _access, see the MSDN link herehttp://msdn.microsoft.com/en-us/library/1w06ktdy(VS.80).aspx 阅读全文

posted @ 2010-08-17 10:30 翰墨小生 阅读(705) 评论(0) 推荐(0) 编辑

C/C++数据对齐
摘要:为了避免混淆,做如下规定,以下代码若不加特殊说明都运行于32位平台,结构体的默认对齐值是8,各数据类型所占字节数分别为char占一个字节int占四个字节double占八个字节。两个例子请问下面的结构体大小是多少?[代码]这个呢?[代码]在公布答案之前先看一下对齐的规则。对齐规则一般来说,结构体的对齐规则是先按数据类型自身进行对齐,然后再按整个结构体进行对齐,对齐值必须是2的幂,比如1,2, 4, ... 阅读全文

posted @ 2010-08-12 11:20 翰墨小生 阅读(19378) 评论(19) 推荐(4) 编辑

C++中的explicit关键字
摘要:先看一下MSDN上关于explicit关键字的解释This keyword is a declaration specifier that can only be applied to in-class constructor declarations. An explicit constructor cannot take part in implicit conversions. It can only be used to explicitly construct an object.1 该关键字只能用来修饰类内部的构造函数class A{public: explicit A(in... 阅读全文

posted @ 2010-08-05 08:35 翰墨小生 阅读(2560) 评论(2) 推荐(3) 编辑

几道C语言题目
摘要:第一题下面代码的输出结果是?int main(){ int a[][3] = {1, 2, 3, 4, 5, 6}; int (*ptr)[3] = a; printf("%d, %d\n", (*ptr)[1], (*ptr)[2]); ++ptr; printf("%d, %d\n", (*ptr)[1], (*ptr)[2]); system("pause") ; return 0 ;}结果2, 35, 6分析ptr的类型是int(*)[3],那么*ptr的类型便是int[3],也就是int*(编译器会将数组名转换成指针),所以 阅读全文

posted @ 2010-07-16 11:21 翰墨小生 阅读(2046) 评论(6) 推荐(0) 编辑

C++默认参数
摘要:函数的默认参数值,即在定义参数的时候同时给它一个初始值。在调用函数的时候,我们可以省略含有默认值的参数。也就是说,如果用户指定了参数值,则使用用户指定的值,否则使用默认参数的值。void Func(int i = 1, float f = 2.0f, double d = 3.0){ cout << i << ", " << f << ", " << d << endl ;}int main(void){ Func() ; // 1, 2, 3 Func(10) ; // 10, 2 阅读全文

posted @ 2010-07-15 17:31 翰墨小生 阅读(45238) 评论(3) 推荐(5) 编辑

一个空类会生成哪些默认函数
摘要:定义一个空类class Empty{};默认会生成以下几个函数1. 无参的构造函数Empty(){}2. 拷贝构造函数Empty(const Empty& copy){}3. 赋值运算符Empty& operator = (const Empty& copy){}4. 析构函数(非虚)~Empty(){}这些函数只有在第一次使用它们的时候才会生成,他们都是inline并且public的。如果想禁止生成这些函数,可以将它们定义成private函数,如果有很多类都有这种需求,那么可以定义一个基类,然后让其他类继承这个类。下面是来自boost库的代码,任何继承了该类的类,都不 阅读全文

posted @ 2010-07-14 08:57 翰墨小生 阅读(5002) 评论(4) 推荐(1) 编辑

关于参数和返回值的常量性
摘要:为什么要将参数或者返回值设置为常量什么时候参数应该是常量的?什么时候返回值应该是常量的?在回答这两个问题之前首先看一下为什么要将参数和返回值设置为常量?一句话,为了防止用户修改参数或者返回值大多数SetXXX()函数的参数都应该是常量性的,因为我们要设置某个值,不需要改变参数,只需将其赋值给要修改的... 阅读全文

posted @ 2010-07-11 15:14 翰墨小生 阅读(1864) 评论(2) 推荐(1) 编辑

为什么static成员必须在类外初始化
摘要:为什么静态成员不能在类内初始化在C++中,类的静态成员(static member)必须在类内声明,在类外初始化,像下面这样。class A{ private: static int count ; // 类内声明};int A::count = 0 ; // 类外初始化,不必再加static关键字为什么?因为静态成员属于整个类,而不属于某个对象,如果在类内初始化,会导致每个对象都包含该静态成员,这是矛盾的。什么东西能在类内初始化能在类中初始化的成员只有一种,那就是静态常量成员。这样不行class A{ private: static int count = 0; // 静态成... 阅读全文

posted @ 2010-07-07 11:36 翰墨小生 阅读(15359) 评论(5) 推荐(2) 编辑

拷贝构造函数
摘要:什么是拷贝构造函数拷贝构造函数是一种特殊的构造函数,它的形式如下。struct Test{ Test() { } Test(const Test& other) // 拷贝构造函数 { cout << "Copy constructor" << endl ; }};什么情况下调用拷贝构造函数以下几种情况会调用拷贝构造函数。以一个对象初始化另一个对象函数以某个对象为参数函数返回某个对象初始化序列式容器的元素struct Test{ Test() { } Test(const Test& other) { ... 阅读全文

posted @ 2010-07-05 21:40 翰墨小生 阅读(1243) 评论(0) 推荐(1) 编辑

正确使用STL-MAP中Erase函数
摘要:一切尽在代码中。#include <iostream>#include <map>#include <string>using namespace std ;int main(void) { map<int, string> m ; m.insert(pair<int, string>(1, "abc")) ; m.insert(pair<int, string>(2, "def")) ; m.insert(pair<int, string>(3, "def&q 阅读全文

posted @ 2010-07-05 08:38 翰墨小生 阅读(12727) 评论(2) 推荐(1) 编辑

C++ 初始化列表
摘要:与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。在C++中,struct和class的唯一区别是默认的访问性不同,而这里我们不考虑访问性的问题,所以下面的代码都以struct来演示。 构造函数的执行可以分成两个阶段 阅读全文

posted @ 2010-07-04 16:59 翰墨小生 阅读(124913) 评论(41) 推荐(41) 编辑

STL-set
摘要:简介set是一种随机存储的关联式容器,其关键词(key)和元素(value)是同一个值。set之中所有元素互不相同。set是通过二叉查找树来实现的。创建创建一个空的set 1: set s0 ;创建一个带大于比较器的set, 默认是小于比较器less 1: set> s1 ;用数组初始化一个se... 阅读全文

posted @ 2010-06-01 22:23 翰墨小生 阅读(12226) 评论(2) 推荐(3) 编辑

Printf(“%d”)
摘要:What’s the output result of the following code snippet? char foo() { unsigned int a = 6; int b = -20; char c; printf("%d ", a + b); (a + b > 6) ? ( c 阅读全文

posted @ 2010-04-20 09:16 翰墨小生 阅读(929) 评论(0) 推荐(0) 编辑

Vector与数组的转化
摘要:可以重载*运算符 1 operator float *(){ return &_x ;} ;2 operator const float *() const{ return &_x ; } ;3 仿照D3D库中的例子,写出如下代码 #include <iostream> using namespac 阅读全文

posted @ 2010-03-08 10:05 翰墨小生 阅读(10255) 评论(0) 推荐(0) 编辑

任意地址赋值,编译没问题,运行时错误
摘要:==#include <iostream>using namespace std ;int main(void){ int *p = (int*)1234; //编译没问题,但运行时出错 *p = 190 ; // not writeable system("pause") ; return 0 ;}// output: run time error! access voilation!== 阅读全文

posted @ 2009-07-27 14:53 翰墨小生 阅读(399) 评论(1) 推荐(0) 编辑

BSP 面试总结
摘要:指针参数 当指针作为函数参数时,对参数本身的修改并不影响原来的值,比如下面的代码,删除链表中第一个值为item的结点。但是结果却不正确。 void Delete(Node *head, int item){ if(head->value == item) head = NULL ;} 这段代码的问题 阅读全文

posted @ 2009-06-03 14:00 翰墨小生 阅读(2454) 评论(5) 推荐(0) 编辑

导航

书法字典:https://www.shufadict.com