有没有手机调频发射器套件软件,有的话发一下,谢谢QQ

  前几天很不爽,因为C++中两个类中互相包含对方对象的指针编译时提示某一个类未定义。。。所以我就想啊想,这样也对,我的头文件都有#ifndef的,包含了一次就不能再包含了,以为就实现不了这样的功能,于是就改了设计方案:
A(B* pB):m_pB(pB)
只在一个类中包含另一个类的指针(算是聚类吧,A不管理m_pB的死活),而在B需要A的属性时通过传递参数进去。这样有些麻烦,但是勉强达到了我的需求。
  今天,又遇到一个必须使用相互包含对象指针的问题,要不然通过参数传来传去麻烦的不得了。所以还是百度了下,结果终于找到了:。里面说的和我需要的差不多,解决方法是一样的。
  文章里面说的很清楚了,我也在这里复述一遍吧,主要解决的就是文件包含的问题:在A的头文件(A.h)中包含B的头文件(B.h),在A的源文件(A.cpp)中包含(A.h),在B的头文件中使用A的声明(class A;)而不是包含A的头文件,然后在B的源文件(B.cpp)中包含A的头文件和B的头文件。代码如下:
#include "B.h"
A(B* pB):m_pB(pB) {}
void useB();
#include "A.h"
void A::useB()
//do something for m_pB
B(A* pA):m_pA(pA) {}
void useA();
#include "A.h"
#include "B.h"
void B::useA()
//do something for m_pA
这样的话B的头文件中不能有使用A的对象指针m_pA的代码,否则会出现&使用了未定义的A&错误。
  最后,问题算是解决了,但是我现在还是有点不明白的,这C++头文件的包含和类的声明等等都应该牵涉到编译器的编译顺序问题,忘大师为我讲解下这是为什么。
  谢谢观众的捧场!
阅读(...) 评论()君,已阅读到文档的结尾了呢~~
《 UML面向对象建模基础》-徐锋
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
发现对象及其属性_行为定义
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口2008年6月 C/C++大版内专家分月排行榜第三
2008年6月 C/C++大版内专家分月排行榜第三
2012年1月 扩充话题大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。C++&&new创建对象&&删除对象的一些常识
在C++里,有两种方法创建对象:
ClassName object(param);
这样就声明了一个ClassName类型的object对象,C++会为它分配足够的存放对象所有成员的存储空间。
注意:为节省存储空间,C++创建对象时仅分配用于保存数据成员的空间,而类中定义的成员函数则被分配到存储空间中的一个公用区域,由该类的所有对象共享。
例如,我定义了一个这样的类:
&&&public:
&&&Rec(int
width,int height);
&&&~Rec();
getArea();
&&&private:
当你Rec myRec(5,5);这样创建一个myRec对象,然后打印出sizeof(myRec);的时候,会得到
8 这个结果。
因为myRec中有2个int类型的数据成员,一个int成员占4个字节,所以myRec对象占8个字节。
这种方法创建的对象,内存分配是分配到栈中的,由C++缺省创建和撤销,自动调用构造函数和析构函数
注意:该方法创建的对象调用类方法时,必须用“.”,而不能用“-&”.如myRec.getArea();
=============================================================================================
ClassName *object=new ClassName(param);
这种方法跟java有点类似,相同的是,它们都是在堆上分配内存来创建对象的(与上不同);不同的是,C++用new创建对象时返回的是一个对象指针,object指向一个ClassName的对象,C++分配给object的仅仅是存放指针值的空间。而且,用new
动态创建的对象必须用delete来撤销该对象。只有delete对象才会调用其析构函数。
注意:new创建的对象不是用“*”或“.”来访问该对象的成员函数的,而是用运算符“-&”;
例如:Rec *rec=new Rec(3,4);
&&&&&&rec-&getArea();
&&&&&&delete
顺便提一下:
一般来说,编译器将内存分为三部分:静态存储区域、栈、堆。静态存储区主要保存全局变量和静态变量,栈存储调用函数相关的变量、地址等,堆存储动态生成的变量。在c中是指由malloc,free运算产生释放的存储空间,在c++中就是指new和delete运算符作用的存储区域。
引用楼主zl10-03-24 15:57发表的 QT或C++中类对象与类指针 :
在QT的教材中常常一个类对象有时直接用他的指针定义比如,QWidget* a=new QW有时却用类对象 QLabel
a(parent),请问有什么区别和好处吗?我知道用指针可以在析构的时候直接DELETE
类指针 use heap memory
类对象 use stack memory
Always use 类指针 for Qt GUI components.
QWidget* a=new QW
QLabel * a =&&new
QLabel(parent);
the reason is that Qt has garbage collector which helps clear heap
You do not need to do the delete. Using 类对象 in Qt for GUI
components
can cause crashes.
&这儿说的很明确,在Qt中如果都用对象
那么栈的空间有限,会出现溢出的情况,因此需要 new对象,而对于Qt
的类,在程序退出时,它会自动清除在heap(堆)的内容。这样也就不会出现内存溢出的问题了(这些都必须与父窗口相关联,当删除父窗口时、子窗口也就相应的呗删除掉,所以还是要慎重用new)。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 无线调频发射器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信