C 实现继承和多态

C中的继承和多态

May 24, 2022 · 1 min · Rick Cui

C++11 继承构造

通过 using 可以方便的使用父类的构造函数和其他函数; 优先使用子类的构造和函数,如果没有找到匹配的才会调用基类的; 可在子类的初始化列表中调用父类的构造函数,并对子类的成员进行列表初始化; class BS { int q; double w; public: BS() : q(0), w(0) {} BS(int k) : q(k), w(100) {} BS(double x) : q(-1), w(x) {} BS(int k, double x) : q(k), w(x) {} void Show() const { std::cout << q <<", " << w << '\n'; } int fn(int j) { cout << "BS::fn(int)\n"; return 0; } double fn(double w) { cout << "BS::fn(double)\n"; return 0; } void fn(const char * s) { cout << "BS::fn(const char *)\n"; } }; class DR : public BS { short j; public: using BS::BS; DR() : j(-100) {} // DR needs its own default constructor DR(double x) : BS(2*x), j(int(x)) {} DR(int i) : j(-2), BS(i, 0....

May 13, 2022 · 2 min · Rick Cui

C++11 委托构造

委托构造的使用方法类似成员列表初始化的变种; 注意: 如果在一个构造函数中使用了本类的委托构造,就不能再对成员使用列表初始化了; 会先执行委托构造函数的函数体,然后再执行本身的函数体; 虽然可以在构造函数中调用其他的构造函数,但已经被初始化的成员变量还会被当前的构造函数进行重置,有可能导致又变为原来的未初始化状态; class Test{ public: Test():Test(0, 0.1){ s = "Ah"; cout << "Test()\n"; } Test(int ii):Test(ii, 0.1, "Hi"){ cout << "Test(int)\n"; } Test(int ii, double dd):Test(ii, dd, "Hi"){ cout << "Test(int, double)\n"; } Test(int ii, double dd, string ss):i(ii), d(dd), s(ss){ cout << "Test(int, double, string)\n"; } void print(){ cout << "i = " << i << "\td = " << d << "\ts = " << s << endl; } private: int i; double d; string s; }; int main() { Test t(10); t....

May 13, 2022 · 1 min · Rick Cui

main 函数执行完后所执行的代码

静态变量在 main 函数前执行初始化 on_exit 注册的函数在 main 执行后再执行 void f(int state, void* msg){ cout << "after main exit.\n"; cout << "state: " << state << "\tmessage: " << (char*)msg << endl; } int main() { cout << "Hello World\n"; on_exit(f, (char*)"this is message"); cout << "end of main.\n"; return 0; } 输出: Hello World end of main. after main exit. state: 0 message: this is message

May 12, 2022 · 1 min · Rick Cui

大端、小端字节序

一、概念 计算机系统中内存是以字节为单位进行编址的,每个地址单元都唯一的对应着 1 个字节(8 bit) 有些类型的长度是超过 1 个字节的,比如 C/C++ 中,short 类型一般是 2 个字节,int 类型一般 4 个字节等。因此这里就存在如何安排多字节数据中,各字节存放顺序的问题。正是因为不同的安排顺序导致了大端存储模式和小端存储模式的存在。 大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中(高低低高) 小端模式:是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中(高高低低) 假如有一个 4 字节的数据为 0x12345678(十进制:305419896,0x12 为高字节,0x78 为低字节),若将其存放于地址 0x4000 8000 中,则有: 内存地址 0x4000 8000(低地址) 0x4000 8001 0x4000 8002 0x4000 8003(高地址) 大端模式 0x12 0x34 0x56 0x78 小端模式 0x78 0x56 0x34 0x12 现状:...

April 21, 2022 · 2 min · Rick Cui