您现在的位置是:主页 > news > 用dedecms 做门户网站/软文代写新闻稿
用dedecms 做门户网站/软文代写新闻稿
admin2025/6/13 18:00:50【news】
简介用dedecms 做门户网站,软文代写新闻稿,网站开发结构图,互动网站建设标题:类对象成为类成员 c中的类成员可以是另一个类的对象,我们称该成员是对象成员。 class A() class B() {A a; };问题就来了,创建B对象时,A与B的构造和析构的顺序是怎么样的?就很棒,先有鸡(…
用dedecms 做门户网站,软文代写新闻稿,网站开发结构图,互动网站建设标题:类对象成为类成员
c中的类成员可以是另一个类的对象,我们称该成员是对象成员。
class A()
class B()
{A a;
};问题就来了,创建B对象时,A与B的构造和析构的顺序是怎么样的?就很棒,先有鸡(…
标题:类对象成为类成员
c++中的类成员可以是另一个类的对象,我们称该成员是对象成员。
class A()
class B()
{A a;
};
问题就来了,创建B对象时,A与B的构造和析构的顺序是怎么样的?就很棒,先有鸡(B)还是先有蛋(A)?鸡(B)先被杀还是蛋(A)先被吃?
代码:
#include <iostream>
using namespace std;
class egg
{
public:egg(int size){egg_size = size;cout << "egg出生了" << endl;cout << "egg_size是:"<<size<<"英寸" << endl;}~egg(){cout << "egg被吃了" << endl;}int egg_size;
};
class chicken
{
public:chicken(int egg_size):a(egg_size){cout << "chicken出生了" << endl;}~chicken(){cout << "chincken被吃了" << endl;}egg a;
};
int main()
{chicken chi(100);
}
用了上一节的初始化列表方式来初始化来巩固该知识点。
我觉得也可以从内存的角度上来解释,c++声明变量类型的一个重要原因就是分配内存空间,构建chicken时我们必须要知道它里面的属性(egg)给构造出来,不然你没法确定要使用多少空间。
我们也可以从栈上来理解,为什么先吃鸡再吃蛋(虽然不符合逻辑。。。因为蛋被孵化成鸡了。。。就算生也不是原来的蛋了。。。)从前面我们知道了先有蛋,所以我们先把蛋压入栈中,然后压入鸡,(栈先进后出),所以鸡先被吃,然后蛋再被吃。。。
创造汽车的时候先有零件再有汽车,发现自己不喜欢这个车,我们要先砸汽车再拆零件。
遗传学来讲好像还真是先有蛋再有鸡,我们吃的都是恐龙的后代。。。。具体我也清楚,下面有链接可以看一下。
先有鸡还是先有蛋答案链接
总结:构造顺序和析构顺序相反(实质上就是栈)。
以上内容包含个人观点,如有错误欢迎指正,有问题的小伙伴可以私聊我或者把问题留在讨论区。