C++ | Es Gilt Viele Mauern Abzubauen
Home » Posts tagged "C++"

Posts Tagged ‘C++’:


[C++]一个由C-Style类型转换引发的血案

没事搜了一下自己域名,无意间发现老早提交的open directory申请居然通过了…想到一个多月没写东西,大惭…

为了尽快阻止这个连续N天没有日志的记录,先找一篇凑数…

先上开胃小菜 Appetizer

有人在byr论坛C++版上问了这样一道C++面试题:

class A {
    public: void fun()    {    }
};
 
class B: public A {
    public: virtual void fun() {    }
};
 
class C: public B {
    public: void fun(){}
};
 
class D: virtual public A {
public:
    void fun(){}
};
 
int main(void)  {
    void *p;
    ((A*)NULL)->fun();
    ((C*)NULL)->fun(); // why fault here?
    ((D*)NULL)->fun();
    return 0;
}

为什么在((C*)NULL)->fun()这句挂了呢?

(更多…)

Tags:


类继承的开销 ——《Inside the C++ Object Model》笔记二

一、不含多态的继承

即基类里没有虚函数。这时候派生类成员的存取时间并没有增加,但是空间上会有浪费。比如有如下两个类

class X {
	int a;
	char b;
};
class Y : public X {
	char c;
};

一个X对象占用4+1+3(padding, 假设4字节对齐) = 8字节。而一个Y对象并不是占用 4+1+1+2(padding)=8个字节,而是占用4+1+3(padding)+1+3(padding)=12个字节。编译器之所以如此设计,是为了使派生类对象中基类对象的内存结构和原始的基类对象一致,这种一致性保证了通过指针复制对象时不出错。如果按照前一种内存布局,会产生错误,比如:

(更多…)

Tags:


© Joker Lee, 2012, under CC3.0
CyberChimps