社区
C++ 语言
帖子详情
一个类的对象作为另一个类的成员变量的问题
「已注销」
2011-10-17 12:02:35
我在第二个类里面声明了第一个类的对象,那么是声明成指针对象还是普通对象?因为我在声明普通对象的时候,编译出错,说“第一个类的构造函数的调用没有匹配的函数”。当声明成指针类型对象的时候,就编译通过。
我想问一下这里面到底有什么区别?
还有这个对象把它声明在private里面呢,还是声明在public里面呢?
第二个类是Qt的主窗口类。
...全文
1167
12
打赏
收藏
一个类的对象作为另一个类的成员变量的问题
我在第二个类里面声明了第一个类的对象,那么是声明成指针对象还是普通对象?因为我在声明普通对象的时候,编译出错,说“第一个类的构造函数的调用没有匹配的函数”。当声明成指针类型对象的时候,就编译通过。 我想问一下这里面到底有什么区别? 还有这个对象把它声明在private里面呢,还是声明在public里面呢? 第二个类是Qt的主窗口类。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
「已注销」
2011-10-31
打赏
举报
回复
[Quote=引用 4 楼 mymixing 的回复:]
楼主,这个问题很好解释。
如果你再主类中(也即第一个类)声明了一个其他类的对象。
那么你主类实例化的时候,也同时实例化了那个其他类的对象。
如果这个其他类对象有自己的特殊的构造函数,你主类构造时如果没有实现那个构造函数。
那么这个其他类的对象因为缺少构造函数的调用是无法实例化的。
但如果你主类中声明的是其他类的指针,因为32位程序中指针就是一个4字节的变量。
所以不存在实例化其他类对象……
[/Quote]
前几天出差了,一直都没结贴,不好意思啊!
那请问在主类中实例化这个类的对象和在其他地方实例化类的对象都有什么区别呢?
simimasaiya
2011-10-17
打赏
举报
回复
路过学习
pengzhixi
2011-10-17
打赏
举报
回复
当你声明的是类的对象作为成员时,那么该类的完整声明必须可见,如果是声明为该类的对象的指针,那么只需要前置声明该类即可。
Enter空格
2011-10-17
打赏
举报
回复
楼主,这个问题很好解释。
如果你再主类中(也即第一个类)声明了一个其他类的对象。
那么你主类实例化的时候,也同时实例化了那个其他类的对象。
如果这个其他类对象有自己的特殊的构造函数,你主类构造时如果没有实现那个构造函数。
那么这个其他类的对象因为缺少构造函数的调用是无法实例化的。
但如果你主类中声明的是其他类的指针,因为32位程序中指针就是一个4字节的变量。
所以不存在实例化其他类对象的情况,所以可以安全实例化主类对象。
也就不会报错了。
这里其实只有一点区别,其他类的对象,是在主类中实例化的还是在别的地方实例化的。
PG
2011-10-17
打赏
举报
回复
帮顶~
Xomic
2011-10-17
打赏
举报
回复
1、均可
2、如果是指针类型的话就跟内置类型一样(int),如果是普通对象类型,第二个类的构造函数
Class2::Class2(参数):Class1(参数)。这种技术叫聚合。具体自己看看。。。
3、视具体情况,语法上面都可。
cocoabird
2011-10-17
打赏
举报
回复
我也常碰到这样的问题,一般我都放在public里,不过不懂是什么原因,希望大神解释下
星羽
2011-10-17
打赏
举报
回复
[Quote=引用 9 楼 kuaikuai3698 的回复:]
引用 8 楼 mymixing 的回复:
引用 7 楼 kuaikuai3698 的回复:
是在主类中实例化另一个类的指针对象的,然后我在主类中通过指针调用另一个类的数组成员变量的值。
如果把指针对象放在private里,读出的值是都是0,如果声明在public里,读出的值却大小不一,有0,有负0,有0.017,-4.876,还有几十位的正负数,这是为什么呢?
呃。。。没读懂。。。。……
[/Quote]
这也太神奇了吧........
看看你的完整代码吧
Enter空格
2011-10-17
打赏
举报
回复
[Quote=引用 9 楼 kuaikuai3698 的回复:]
就是我把指针对象放在private里和public里,最后调用的结果不一样
[/Quote]
代码怎么写的。
你这情况估计是代码写错了。
「已注销」
2011-10-17
打赏
举报
回复
[Quote=引用 8 楼 mymixing 的回复:]
引用 7 楼 kuaikuai3698 的回复:
是在主类中实例化另一个类的指针对象的,然后我在主类中通过指针调用另一个类的数组成员变量的值。
如果把指针对象放在private里,读出的值是都是0,如果声明在public里,读出的值却大小不一,有0,有负0,有0.017,-4.876,还有几十位的正负数,这是为什么呢?
呃。。。没读懂。。。。
[/Quote]
就是我把指针对象放在private里和public里,最后调用的结果不一样
Enter空格
2011-10-17
打赏
举报
回复
[Quote=引用 7 楼 kuaikuai3698 的回复:]
是在主类中实例化另一个类的指针对象的,然后我在主类中通过指针调用另一个类的数组成员变量的值。
如果把指针对象放在private里,读出的值是都是0,如果声明在public里,读出的值却大小不一,有0,有负0,有0.017,-4.876,还有几十位的正负数,这是为什么呢?
[/Quote]
呃。。。没读懂。。。。
「已注销」
2011-10-17
打赏
举报
回复
[Quote=引用 4 楼 mymixing 的回复:]
楼主,这个问题很好解释。
如果你再主类中(也即第一个类)声明了一个其他类的对象。
那么你主类实例化的时候,也同时实例化了那个其他类的对象。
如果这个其他类对象有自己的特殊的构造函数,你主类构造时如果没有实现那个构造函数。
那么这个其他类的对象因为缺少构造函数的调用是无法实例化的。
但如果你主类中声明的是其他类的指针,因为32位程序中指针就是一个4字节的变量。
所以不存在实例化其他类对象……
[/Quote]
是在主类中实例化另一个类的指针对象的,然后我在主类中通过指针调用另一个类的数组成员变量的值。
如果把指针对象放在private里,读出的值是都是0,如果声明在public里,读出的值却大小不一,有0,有负0,有0.017,-4.876,还有几十位的正负数,这是为什么呢?
C++之
类
对象
作为
成员变量
C++允许
一个
类
的
对象
作为另
一个
类
的
成员变量
,但是这时其构造函数与析构函数是怎样调用的呢。 不妨写一段代码来考究一下。 class A { public: A() { cout << "A的构造函数的调用" << endl; } ~A()...
一个
类
的
对象
做为另
一个
类
的数据成员
1、在c++中,当把
一个
类
的
对象
作为另一...2、如果
一个
类
A的
对象
作为另
一个
类
B的数据成员,则在
类
B的
对象
创建过程中,调用其构造函数的过程中,数据成员(
类
A的
对象
)会自动调用
类
A的构造函数。 但是应注...
C++把
一个
类
对象
作为另
一个
类
的成员,或者作为
一个
结构体的成员
1.
类
对象
在另
一个
类
里做成员 class Date { int year; int month; }; class Student{ string name; Date t; }; 2.
类
对象
在结构体中做成员
类
对象
可以在结构体中做成员。不过
类
的
对象
不能在联合体中做成员。 ...
<C++>详解
类
对象
作为
类
成员时调用构造和析构的时机及静态成员解释
终于到了
对象
的初始化和清理的最后阶段了,在这里分享
一个
cpp里有多个
类
时,
一个
类
的
对象
作为另
一个
类
成员的时候构造函数和析构函数调用的时机。还有
一个
静态成员也是经常考到的点,在这篇博客将会详解其概念并举出...
一个
类
的
对象
作为另
一个
类
的数据成员时如何构造函数
一个
类
的
对象
作为另
一个
类
的数据成员。
一个
类
中的数据成员除了可以是int, char, float等这些基本的数据
类
型外,还可以是某
一个
类
的
一个
对象
。用子
对象
创建新
类
。 &...
C++ 语言
64,671
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章