| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 942 人关注过本帖
标题:一个类怎么持有其他类的引用?
只看楼主 加入收藏
dousao
Rank: 2
等 级:论坛游民
帖 子:228
专家分:58
注 册:2007-11-8
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:7 
一个类怎么持有其他类的引用?
比如 A类中 想持有B类的引用 达到在A中操作B中变量的目的
A中申明 变量 B m_b;
A中申明 构造函数 A(B& b){m_b = b;}

编译不通过
搜索更多相关主题的帖子: 申明 其他 
2010-11-29 15:11
zfan85
Rank: 1
等 级:新手上路
帖 子:25
专家分:8
注 册:2010-8-30
收藏
得分:3 
你定义了 class B的= 了么?
2010-11-29 15:28
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:3 
在A中 B &m_b;
A(B& b):m_b(b){}

离恨恰如春草,更行更远还生。
2010-11-29 15:52
s545167866
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2010-11-28
收藏
得分:3 
3楼正解 你要用的是B的引用,你在A中定义的知识一个B的变量,不是引用类型的
2010-11-29 16:26
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:3 
你要知道构造函数调用的顺序:
1.如果这个类是个派生类,先调用基类的构造函数(你的显然不是)
2.如果你这类中有内嵌子对象,比如说像这样:
class A
{
 public:
       A();
      ~A();
private:
        B b;//假如说B也是一个类
     int  a;
};
那么你应该先调用B类的构造函数,则A的构造函数应该实现如下:
A::A(int b1,int b2):b(b1,b2)//假如B类构造函数有两个参数
3.最后调用本类自己的构造函数

                                         
===========深入<----------------->浅出============
2010-11-29 16:38
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
收藏
得分:3 
class A
{
public:
       A(B& b):m_b(b){};
      ~A();
private:
        B &m_b;//假如说B也是一个类
};

-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2010-12-02 22:36
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:3 
想定义引用类型的话,就是 3楼 说的那样。6楼 和 3楼 是一个意思。
2010-12-02 23:28
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:3 
楼主可查阅初始化列表相关内容。
A(B& b){m_b = b;}//这是无初始化,相当于,B& m_b;m_b = b;
A(B& b):m_b(b){ }//这是给m_b进行初始化。相当于,B& m_b = b;
1。除了静态数据成员,其它的数据成员都是先在初始化列表里完成初始化,然后再进入函数体当中。没有在初始化列表里出现的,就调用其默认构造函数。(编译器可能会有优化行为。)
2。没有空引用,引用必须初始化。


迭代的是人,递归的是神。
2010-12-03 07:41
快速回复:一个类怎么持有其他类的引用?
数据加载中...
 
   



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

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