| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 427 人关注过本帖
标题:嵌套类问题
只看楼主 加入收藏
大剑
Rank: 2
等 级:论坛游民
帖 子:30
专家分:25
注 册:2011-11-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
嵌套类问题
帮我看下这个程序,然后帮我讲解下。我实在是不明白。O(∩_∩)O谢谢先!
程序代码:
#include "stdafx.h"
#include <iostream>
using namespace std;

class CA
{
public:
    CA(){cout<<"This is the constructor of CA"<<endl;}
    ~CA(){cout<<"This is the destructor of CA"<<endl;}
};
class CB
{
    CA a;//只知道这里是类的组合
public:
    CB(){cout<<"This is the constructor of CB"<<endl;}
    ~CB(){cout<<"This is the constructor of CB"<<endl;}
};
void fun(int n)
{
    static CA a;//这里不清楚为啥定义静态
    CB b;
    cout<<"n="<<n<<endl;
}
void main()
{
    fun(10);
    fun(20);
    CA *A;//这里不明白
    CB *pb=new CB;//这里也是
    delete pb;
}


图片附件: 游客没有浏览图片的权限,请 登录注册



[ 本帖最后由 大剑 于 2012-2-18 11:55 编辑 ]
搜索更多相关主题的帖子: 帕米尔 地球 
2012-02-18 11:50
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:10 
被static声明的字段只会被初始化一次,如果在函数中定义,那么只会在该函数第一次调用时初始化,并且在main函数返回的时候(程序结束的时候)该类的析构函数才会被调用。一个类的构造函数调用之前,会先初始化这个类的所有字段,如果有字段是对象,那么这个对象的构造函数会被调用,如果这个字段对象还拥有字段对象,那么这将会被递归调用,直到该类所有字段初始化完毕。CA *A是定义一个指向CA类的指针,CB *pb=new CB,在堆中创建一个CB对象,并返回该对象的地址,然后赋值给,CB对象的指针pb。虽然这是在堆中创建的对象当然和在栈中一样,C++也保证这个类的构造函数会被调用。

My life is brilliant
2012-02-18 19:05
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:10 
看到那个new我想到了malloc函数,以前遇到过一段代码,使用的是malloc函数来分配一个类对象,有点奇怪,因为malloc函数不会调用构造函数,用malloc分配的类对象是匿名的。二楼讲解的东西都是最基本的,这些东西如果楼主都不知道,那就好好去学学C++!

愿用余生致力编程
2012-02-18 21:03
大剑
Rank: 2
等 级:论坛游民
帖 子:30
专家分:25
注 册:2011-11-16
收藏
得分:0 
汗! 我会加油的!
2012-02-19 09:53
快速回复:嵌套类问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015597 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved