`
waret
  • 浏览: 132009 次
  • 性别: Icon_minigender_1
  • 来自: 天津
文章分类
社区版块
存档分类
最新评论
文章列表
#include <iostream> #include <cstdio> using namespace std; class A { public: char ach[3]; virtual void test() { }; }; class B : public A { public: char bch[3]; virtual void btest() { }; }; class C : public A { char cch[3]; ...
    普通文件(regular file):就是一般我们存取的文件,由ls -al显示出来的属性中,第一个属性为 [-],例如 [-rwxrwxrwx]。另外,依照文件的内容,又大致可以分为: • 纯文本文件(ASCII):这是Unix系统中最多的一种文件类型,之所以称为纯文本文件,是因为内容为我们可以直接读到的数据,例如数字、字母等等。设置文件几乎都属于这种文件类型。举例来说,使用命令“cat ~/.bashrc”就可以看到该文件的内容(cat是将文件内容读出来)。 • 二进制文件(binary):我们在GNU发展史中提过,系统其实仅认识且可以执行二进制文件(binary file)。L ...
#include <iostream> using namespace std; class A { public: void print() { cout << "hello" << endl; } int a; }; int main() { A a; A *pa = &a; delete pa; return 0; }   会产生运行时错误。
15 :     15 = 15            00000000000000000000000000001111     15<<4 = 240        00000000000000000000000011110000     15>>4 = 0        00000000000000000000000000000000 -15 :     -15 = -15        11111111111111111111111111110001     -15<<4 = -240        111111111111111111111 ...
#include <iostream> #include <sstream> using namespace std; template<class T> struct tbtnode { T s_t; bool lflag; bool rflag; tbtnode *lchild; tbtnode *rchild; }; template<class T> tbtnode<T>* createtbt(tbtnode<T>* tbt, int k, ostream& out ...
#include <iostream> using namespace std; int checkCPUendian() { union { unsigned int a; unsigned char b; } c; c.a = 1; return (c.b == 1); } int main() { // 输出为1,表示 little-endian // 如果输出为0,则表示 big-endian cout << checkCPUendian() << endl; return 0; ...
  #include <iostream> using namespace std; int global = 10; // 全局/静态变量区,与常量区很近 int main() { // a, b, c 三个变量都是存放在栈中 // 但是指向的位置则不同 const char *a = "hello"; // 常量区,不允许修改 char b[] = "hello"; // 栈 char *c = new char[10]; // 堆 cout << hex << ...
问题:     说有一批编号为1~100的灯,每个灯下面都有一个开关,按一下就开,再按一下就关,一开始灯都是灭的。然后有个数学乘法的初学者为了联系100以内的乘法,决定:         1. 凡是编号为1的倍数的,按一次开关         2. 凡是编号为2的倍数的,再按一次开关         3. 凡是编号为3的倍数的,再按一次开关         4. ....         5. 凡是编号为100的倍数的,再按一次开关     问:最后哪些灯还亮着?   解答:     编号为平方数的灯是亮着的。
问题:       话说有一国王找到100个囚犯,每个人都剃了光头。     国王对他们说:一会儿有人会在你们头上写上1-100之间的随机数。你们只要有一个人能说对大家头上所有数字的和,就都放了。否则统统赠送给芙蓉姐姐做宠物。给你们一炷香的时间好好商量一下对策。     这帮子囚犯都是学过基本算数的,加减乘除都没问题。     一炷香之后,国王的巫师屏蔽了他们之间的交流(不要问我怎么做到的) - 结果每个囚犯都能看到别人头上写的啥,但没办法知道自己的数字。     囚犯们采用什么策略才能保证一定会被释放呢?   解答:       设100个囚犯头上数字的和为sum;第N个囚 ...
任何一个有经验的程序员都知道,软件开发遵循着一些不成文的法则。然而,如果你不遵循这些法则也并不意味着会受到惩罚;相反,有时你还会获得意外的好处。下面的就是软件编程中的21条法则: 任何程序一旦部署即显陈旧。 修改需求规范来适应程序比反过来做更容易。 一个程序如果很有用,那它注定要被改掉。 一个程序如果没用,那它一定会有很好的文档。 任何程序里都仅仅只有10%的代码会被执行到。 软件会一直膨胀到耗尽所有资源为止。 任何一个有点价值的程序里都会有至少一个bug。 原型完美的程度跟审视的人数成反比,反比值会随着涉及的资金数增大。 软件直到被变成产品运行至少6个月后,它最严重 ...
补码的补码是原码: 设原码为a,a的补码为b,b的补码为c 则b = ~a + 1; c = ~b + 1 = ~(~a + 1) + 1 = a + ~(1) + 1 = a   补码的计算方法:     正数的补码是其本身;     负数的补码是原码按位取反,末尾加1,符号位不变。即从最低位开始,到第一个1,各位不变,符号位不变,其他各位取反。   补码的性质: 1. 两数之和的补码等于各数补码之和。 2. 两数之差的补码等于被减数的补码与减数相反数的补码。 3. 原码的补码的补 ...
定义虚函数的限制: (1)非类的成员函数不能定义为虚函数,类的成员函数中静态成员函数和构造函数也不能定义为虚函数,但可以将析构函数定义为虚函数。实际上,优秀的程序员常常把基类的析构函数定义为虚函数。因为,将基类的析构函数定义为虚函数后,当利用delete删除一个指向派生类定义的对象指针时,系统会调用相应的类的析构函数。而不将析构函数定义为虚函数时,只调用基类的析构函数。 (2)只需要在声明函数的类体中使用关键字“virtual”将函数声明为虚函数,而定义函数时不需要使用关键字“virtual”。 (3)当将基类中的某一成员函数声明为虚函数后,派生类中的同名函数自动成为虚函数。 (4)如果 ...
一种允许你做一些 C++ 不直接支持的事情的用法。 你可能通过虚函数 virtual clone()(对于拷贝构造函数)或虚函数 virtual create()(对于默认构造函数),得到虚构造函数产生的效果。 class Shape { public: virtual ~Shape() { } // 虚析构函数 virtual void draw() = 0; // 纯虚函数 virtual void move() = 0; // ... virtual Shape* clone() c ...
一 在C中分为这几个存储区 1.栈 由编译器自动分配释放; 2.堆 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收; 3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 程序结束后释放; 4.另外还有一个专门放常量的地方。程序结束后释放。                                                                                                                     ...
1 栈中的变量,其内存地址是从高地址到低地址进行分配的: int i=1; int j=1; cout<<&i<<endl<<&j<<endl; //输出:0012FF60(高地址处) 0012FF54(低地址处) int * pi = new int(10); float * pf = new float(1.1); cout<<pi<<endl<<pf<<endl; // 输出:0x602010(低地址) 0x602030(高地址),指针指向的位置是在堆里,所以地址从低 ...
Global site tag (gtag.js) - Google Analytics