c++默认构造函数有关问题~好困惑啊·

c++默认构造函数问题~~好困惑啊·
firsr:深入理解c++对象模型里面说。c++编译器只会在合适的时候才会提供默认构造函数(编译器提供)。
一个类满足下列其中任何一个条件:
1.包含了一个类的对象,这个对象有一个构造函数(包括编译器合成的默认构造函数)
2.如果继承自一些基类,其中某些基类有一个构造函数(包括编译器合成的默认构造函数)
3.有一个虚函数,或者继承到了虚函数
4.有虚基类关于合适会生成默认构造函数,
请看下面的说明:如果这个类没有默认的构造函数,编译器就会合成一个默认的构造函数,分别做以下事情如果这个类有构造函数,编译器就会扩张所有构造函数,做以下事情
1.调用这个对象的构造函数
2.调用基类的构造函数
3.设置正确的虚函数表指针
4.设置指向虚基类对象的指针
对于一个空类
class A
{
};
下面这段话:
second:如果你只是声明一个空类,不做任何事情的话,编译器会自动为你生成一个默认构造函数、一个拷贝默认构造函数、一个默认拷贝赋值操作符和一个默认析构函数。这些函数只有在第一次被调用时,才会别编译器创建。所有这些函数都是inline和public的。

按照first:说的。对于空类,编译器也没必要给一个默认的构造函数啊。这两段话怎么理解啊~~~晕头转向




------解决方案--------------------
首先这两段话,没有冲突的,一个空类,他会给你这些东西的!
------解决方案--------------------
这只是人认为的:空类不需要默认的构造函数.
假如这个空类的一个对象时另一个类的数据成员,则又回到first了.想想看?
------解决方案--------------------
对于first,我记得是编译器会生成nontrivial default constructor ,即编译器会添加一些额外操作(比如,有虚

函数,那么这个构造函数就需要设定类实例的虚表指针;再比如继承自一个基类,这个基类有构造函数,那么这个

构造函数就会调用基类构造函数...)

除了你列的这四种情况外,其它的也会生成默认构造函数,不过是trivial default constructor,反正这些trivial 

default的构造或拷贝函数都是bitwise copy实现的,

空类当然会生成一个默认构造函数、一个拷贝默认构造函数、一个默认拷贝赋值操作符和一个默认析构函数,

比如说

class A
{
};

A a;//调用默认构造函数,因为声明一个类的实例的时候必须要调用构造函数,实际上什么都不做
A b(a);//...实际上什么都不做,如果有成员变量的话,执行bitwise copy
A c=a;//...如果有成员变量的话,执行bitwise copy

如果没有生成trivial函数你的这些操作编译器该怎么做
------解决方案--------------------
http://topic.csdn.net/u/20111217/18/762339ca-1552-4eda-b516-d7ce9f1fdcf4.html?28471
------解决方案--------------------
纠结啊