随笔分类 -  技术-C/C++

摘要:memory-alignmentTable of Contents1. Conclusion2. Test Program3. Memory Alignment in ubuntu14.04 i3863.1. kernel version3.2. result4. Memory Alignment ... 阅读全文
posted @ 2015-08-19 15:59 阿青1987 阅读(299) 评论(0) 推荐(0)
摘要:1)“多态”的关键在于通过基类指针或引用调用一个虚函数时,编译时不确定到底调用的是基类还是派生类的函数,运行时才确定 -- 这叫 “动态联编”。2)分析下面示例的运行结果class Base {public: int i; virtual void Print() {cout Print... 阅读全文
posted @ 2015-06-24 22:04 阿青1987 阅读(225) 评论(0) 推荐(0)
摘要:1)头文件 game.h#ifndef GAME_H#define GAME_H// base classclass CCreature {protected: int m_nLifePower, m_nPower;public: virtual void Attack(CCreatur... 阅读全文
posted @ 2015-06-24 13:14 阿青1987 阅读(397) 评论(0) 推荐(0)
摘要:1)使用vc6 编写动态库,动态库源码 (dll_test.cpp) 如下:#include // _declspec(dllexport) means test() can be called by othersvoid _declspec(dllexport) test() { Messa... 阅读全文
posted @ 2015-06-24 09:45 阿青1987 阅读(725) 评论(0) 推荐(0)
摘要:在面向对象的程序设计中使用多态,能够增强程序的可扩充性,即程序需要修改或增加功能的时候,需要改动或增加的代码较少。 阅读全文
posted @ 2015-06-23 20:26 阿青1987 阅读(643) 评论(0) 推荐(0)
摘要:在类的定义中,前面有virtual 关键字的成员函数就是虚函数。1)virtual 关键字只用在类定义里的函数声明中,写函数体是不用。2)构造函数和静态成员函数不能是虚函数。虚函数的作用同函数重载一样,也是为了实现多态性。以下示例中 A 和 B 定义了相同接口,分别调用时,输出不同。class A ... 阅读全文
posted @ 2015-06-23 10:30 阿青1987 阅读(174) 评论(0) 推荐(0)
摘要:内联函数从源码层看,有函数的结构,而在编译后,却不具备函数的性质。内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理。应注意如下几点: 1... 阅读全文
posted @ 2015-04-03 08:52 阿青1987 阅读(514) 评论(0) 推荐(0)
摘要:使用C语言将一个1GB的字符数组从头到尾全部设置为字符‘A’,在一台典型的当代PC上,需要花费的CPU时间的数量级最接近?A 0.001秒 B 1秒 C 100秒 D 2小时结果:B析:1GB 需要一1G条指令比如4核2GHz的CPU,若一个周期一条指令,需要0.25 秒完成,固最接近 1秒。 阅读全文
posted @ 2015-04-03 08:47 阿青1987 阅读(212) 评论(0) 推荐(0)
摘要:#includeint main(void){ char ch; scanf("%c", &ch); printf("The code for %c is %d.\n", ch, ch); return 0;} 阅读全文
posted @ 2015-03-20 09:25 阿青1987 阅读(242) 评论(0) 推荐(0)
摘要:1、概念继承:在定义一个新的类B时,如果该类与某个已知类A相似(指的是B拥有A的全部特点),那么就可以把A作为一个基类,而把B作为一个派生类(也称子类)。派生类是通过对基类进行修改和扩充得到的。在派生类中,可以扩充新的成员变量和成员函数。派生类一经定义后,可以独立使用,不依赖于基类。派生类拥有基类的... 阅读全文
posted @ 2015-03-19 22:06 阿青1987 阅读(987) 评论(2) 推荐(0)
摘要:错误代码如下示:#include #include #include void get_memory(char *p, int num){ p = (char *)malloc(sizeof(char)*num);}int main(int argc,char *argv[]){ char *s... 阅读全文
posted @ 2015-03-19 09:44 阿青1987 阅读(168) 评论(0) 推荐(0)
摘要:1、相关1)赋值运算符“=”只能重载为 成员函数2、要求编写一个长度可变的字符串类 String2包含一个char * 类型的成员变量,指向动态分配的存储空间该存储空间用于存放 '\0' 结尾的字符串3、代码实现#include #include using namespace std;class ... 阅读全文
posted @ 2015-03-18 21:17 阿青1987 阅读(387) 评论(0) 推荐(0)
摘要:1、为了避免同一个文件被include多次,C/C++中有两种宏实现方式:一种是#ifndef方式,一种是#pragma once方式。 在能够支持这两种方式的编译器上,二者并没有太大的区别。2、#pragma once 一般由编译器提供保证:同一个文件不会被包含多次。注意这里所说的“同一个文件”是... 阅读全文
posted @ 2015-03-14 15:02 阿青1987 阅读(165) 评论(0) 推荐(0)
摘要:1、用递归来完成递推方法:1)把关注点放在要求解的目标上即 i=n时的结果2)进而找到第n次做与第n-1次做之间的关系;3)确定第1次的返回结果如切饼示例其中n是切的刀数,q(n)是饼的块数代码实现int get_cake_number(int cutnum){ if (cutnum == 0... 阅读全文
posted @ 2015-03-12 11:00 阿青1987 阅读(978) 评论(0) 推荐(0)
摘要:1、如下递归函数输入abc回车 后输出结果是多少?#include using namespace std;void recur(){ char c; c = cin.get(); if (c != '\n') { recur(); } cout <... 阅读全文
posted @ 2015-03-12 10:52 阿青1987 阅读(519) 评论(0) 推荐(0)
摘要:1、运算符重载对已有的运算符赋予多重的含义使同一运算符作用于不同类型的数据时产生不同类型的行为目的扩展C++中提供的运算符的适用范围,以用于类所表示的抽象数据类型运算符的重载实质是函数重载,类型如下:返回值类型 operator 运算符(形参表){ ... }在程序编译时把含运算符的表达... 阅读全文
posted @ 2015-03-11 22:20 阿青1987 阅读(164) 评论(0) 推荐(0)
摘要:取变量的地址&C 获取地址的占用的存储空间 sizeof(&C) 通过地址操作变量*&C 阅读全文
posted @ 2015-03-11 21:50 阿青1987 阅读(167) 评论(0) 推荐(0)
摘要:定义一个指针变量指针变量的使用如int c = 76;int * pointer = &c;则*pointer 为 pointer 所指向的存储单元的内容,是变量C而不是数字76另:指针变量也是变量,是变量就有地址。 阅读全文
posted @ 2015-03-11 21:47 阿青1987 阅读(281) 评论(0) 推荐(0)
摘要:In little-endian systems, what is the result of following C program ?#include typedef struct bitstruct { int b1:5; int :2; int b2:2; } bitstruct;i... 阅读全文
posted @ 2015-03-10 21:04 阿青1987 阅读(625) 评论(0) 推荐(0)
摘要:一、位域的形式有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态,用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说... 阅读全文
posted @ 2015-03-10 20:50 阿青1987 阅读(1167) 评论(0) 推荐(0)