首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将主窗口指针传递给其他类是个好主意吗?

将主窗口指针传递给其他类是一个有争议的问题。在软件开发中,传递指针可以实现类之间的数据共享和通信,但也存在一些潜在的问题和风险。

优势:

  1. 数据共享:通过传递主窗口指针,其他类可以访问主窗口中的数据和状态,方便实现数据共享和交互。
  2. 简化通信:传递指针可以简化类之间的通信,避免使用其他复杂的通信机制。

劣势和风险:

  1. 依赖性:其他类对主窗口的指针依赖性较高,一旦主窗口发生变化或被销毁,可能导致其他类无法正常工作。
  2. 安全性:传递指针可能导致潜在的安全风险,其他类可能滥用指针访问主窗口中的数据,造成数据泄露或破坏。
  3. 耦合度增加:传递指针会增加类之间的耦合度,降低代码的可维护性和可扩展性。

综上所述,将主窗口指针传递给其他类需要谨慎考虑。在设计时,应根据具体情况权衡利弊,考虑使用其他更合适的设计模式或机制来实现类之间的通信和数据共享,如事件驱动、观察者模式、依赖注入等。

腾讯云相关产品和产品介绍链接地址: 腾讯云提供了丰富的云计算产品和服务,包括云服务器、云数据库、云存储、人工智能等。具体产品和服务可以参考腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【C++】This指针和复制构造函数

在声明一的时候,没有分配存储空间的,只有在真正定义一对象的时候,程序才会为这个对象分配相应的存储空间。...this指针 在每个成员函数中,都包含一特殊的指针。 这个指针的名字固定的,就是this指针。 this指针指向对象的指针,它的值当前被调用的所在对象的地址!...this指针指向本类对象的指针,它作为参数传递给成员函数 this指针隐式使用的。由编译器自动实现,我们不必人为的在形参中添加this指针。...CTime(CTime& time);//使用名对象作为参数,引用 调用复制构造函数的时机: 在什么情况下使用复制构造函数 1.以其他对象作为参数创建新对象时。...我们使用对象作为函数参数的时候,以及返回一对象的时候,代价很大的, 因为伴随着对象的创建和销毁,还伴随着复制构造函数的调用, 所以一般使用引用来规避这种代价!

82920

C++编程经验(12):C++11新特性

update(dynamic_cast(pw)); // 正确,传递给 update 函数一指针指向变量类型为 son的 pw 的指针 void updateViaRef(son&...传递给 updateViaRef 函数 SpecialWidget pw 指针 ---- 智能指针 智能指针存储指向动态分配(堆)对象指针。...---- 绑定器干嘛的呢?参数绑定到函数指针上的。 以前的绑定器只能绑定一参数,所以我们看到的很多古老的需要函数指针参的函数都只有一参数传递,但是有了新的绑定器就不一样了。...如果给手动写了带参构造,那也是无法显式使用无参构造函数了。 如果没有了默认构造,子类就不能不参给父进行构造了。...---- volatile 如上图所示,所有线程的共享变量都存储在内存中,每一线程都有一独有的工作内存,每个线程不直接操作在内存中的变量,而是内存上变量的副本放进自己的工作内存中,只操作工作内存中的数据

1K20
  • 2021腾讯实习一面复盘-小丑竟是我自己

    sizeof在32位下4,64位下8sizeof数组所占存储空间大小,但是参时会退化为指针,此时sizeof即指针大小 #include using namespace...<< endl;//4,数组首指针 cout << sizeof(*b) << endl;//40,所指数组大小10×4(32位int大小) //参时退化成了指针引用传递...否则会直接用基对象调用基函数。 (插播反爬信息 )博CSDN地址:https://wzlodq.blog.csdn.net/ 虚函数 虚函数即在的成员函数前面加virtual关键字。...TCP滑动窗口 发送窗口不断向前滑动,一种连续的AQR协议。允许发送方已发送但还没有收到确认的分组序号的范围,窗口大小发送方已发送未确认的最大分组数。避免单窗口的一直等待一ack而延迟阻塞。...Linux命令 可参考:Linux-基础实用指令(不会还有人不知道吧) Java Java的GC机制 可参考:还不会JVM,准备家里蹲

    58120

    【C++初阶】和对象修炼上

    这一专题C++学习者的第一道小坎,我分为上中下三节给大家讲解 和对象上:和对象的引入,包括一些细碎的知识点,包括面向对象思想,的实例化,this指针和对象中:和对象中的六大默认成员函数中最常用的...指针 还记得第7点我们讲的中成员函数的存储布局?...答案代码1正常运行,代码2运行崩溃 或许有人说:这个p空,p->这里不是就是错的?...只能在“成员函数”的内部使用 this指针本质上“成员函数”的形参,当对象调用成员函数时,将对象地址作为实参传递给 this形参。所以对象中不存储this指针。...this指针“成员函数”第一隐含的指针形参,一般情况由编译器通过ecx寄存器自动 递,不需要用户传递 其实:我们细想一下,我们在学C语言的时候,对于参,我们一般都是选择变量(比如栈或数组

    68640

    【opencv小项目】深入理解回调函数

    读取一张图片,在该图片上截取一ROI区域,截取的图片在一新的窗口内展示,并将该图片保持到工程目录下。...首先我们先看一回调函数原理: 回调函数就是一通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。...如果你学过单片机,那你可以鼠标回调函数理解为单片机的中断函数 运行机制: ⑴定义一回调函数; ⑵函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者; ⑶当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理...程序如下(详细注释): //@event:鼠标事件标志(不需要自己参) //@x:鼠标在窗口中的x坐标 //@y:鼠标在窗口中的y坐标 //@flags:自定义的宏,做标记符,Ture时开始绘制矩形...学到了什么

    1.3K40

    【C语言】卍字通晓→函数+递归

    函数调用其他函数,其他函数也可以互相调用。同一函数可以被一或多个函数调用任意多次。...编写程序于盖这个楼房实际道理,函数就像是工程师一样,其功能控制每一步程序的执行,其中定义的其他函数就好比盖楼中的每一道步骤,分别去完成自己所对应的特殊功能。...址(引用)调用  通过指针传递方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作。 ...不就是函数体内自身调用自己称之为递归。 如上述代码中可以看到,这里函数里面有打印库函数,其语句hello C。那么后面有main();函数。...形参字符型指针变量str指向的不就是这个字符串。那么这个拿到字符串的第一长度很容易的,因为我们一开始str就是从第一字符拿到的不是?刚好可以进行判断它是不是'\0',如果不是就继续执行!

    75610

    WINDOWS核心编程--Windows程序内部运行机制

    消息队列 WinMain函数 WinMain 函数的原型声明如下: 窗口的创建 设计一窗口 CS_开头的样式(class style) lpfnWndProc---一函数指针-----指向 窗口过程函数...---指定窗口的名字 注册窗口 创建窗口 /符号的意义 显示及更新窗口 更新窗口 消息循环 `TranslateMessage`---虚拟键消息转化为字符消息 `DispatchMessage`-...第三参数 lpCmdLine 以空终止的字符串,指定传递给应用程序的命令行参数。...注意,尽管这样很方便,但它必须慎重使用,因为每个DC大约要占800字节的内存。 CS_PARENTDC: 窗口的裁剪区域设置到父窗口的DC中去,这样子窗口便可以在父窗口上绘制自身。...LPARAM 声明lParam所使用的类型,lParam窗口程序的第四参数 WPARAM 声明wParam所使用的类型,wParam窗口程序的第三参数 LPVOID 一般指针类型,与(void

    1.5K50

    C++之多态

    虚表存在哪里,存放在对象中?...虚表里面存放的是什么,存放着虚函数? 答:虚表存放在代码段,对象中存放的虚表指针;虚函数存放在代码段,虚表里存放的虚函数指针。 2.多态的原理 分析了这么多,多态的原理到底是什么呢?...Func得到不同的结果,这是因为基调用函数的参基对象,而派生对象调用函数时的派生对象中基的那一部分。...导致基指针p调用基的成员函数,派生指针p调用派生的成员函数。 简单来说: 普通函数调用是谁调用谁; 符合多态的函数调用就是指向谁调用谁。...我们可以这个现象理解为一Bug,并不是派生的虚表里没有它自己的虚函数,而是这两虚函数被监视窗口隐藏了。那么如果我们想查看派生的虚函数都有那些该如何进行查看呢?

    34940

    函数参数的值和指针有什么区别?

    前言 我们可能听过C语言中的值和指针,在其他语言中,也有引用一说,那么他们到底有什么区别呢?如果你还不能准确地分辨,就该好好了解一下了。...也就是说,你认为的指针也是值,只不过它的值指针类型罢了。 我们再通过图来理解前面为什么指针就可以交换a,b的值: ?...从图中可以看出,虽然传递给函数的指向a和b的指针的副本,但是它的副本同样也是指向a和b,因此虽然不能改变指针的指向,但是能改变参数a和b指向的内容,即改变原始a和b的值。...再看指针 如果指针p申请一段内存,下面的代码能达到目的?...我们还是利用前面所知来分析,由于传递给getMemory函数的参数都是一副本,因此函数内的p也是外部p的一副本,因此即便在函数内部,p指向了一块新申请的内存,仍然不会改变外面p的值,即p还是指向NULL

    3K30

    C语言函数参数如何传递的?

    前言 我们可能听过C语言中的值和指针,在其他语言中,也有引用一说,那么他们到底有什么区别呢?如果你还不能准确地分辨,就该好好了解一下了。...也就是说,你认为的指针也是值,只不过它的值指针类型罢了。...我们再通过图来理解前面为什么指针就可以交换a,b的值: 指针 从图中可以看出,虽然传递给函数的指向a和b的指针的副本,但是它的副本同样也是指向a和b,因此虽然不能改变指针的指向,但是能改变参数a...裙里有大量学习资料,有大神解答交流问题,每晚都有免费的直播课程 再看指针 如果指针p申请一段内存,下面的代码能达到目的?...我们还是利用前面所知来分析,由于传递给getMemory函数的参数都是一副本,因此函数内的p也是外部p的一副本,因此即便在函数内部,p指向了一块新申请的内存,仍然不会改变外面p的值,即p还是指向NULL

    4.1K11

    C++中的四种多态

    在本文中,我通过C ++语言的示例来说明所有多态性,并深入介绍为什么它们具有其他各种名称。 子类型多态性(运行时多态子类型多态每个人在C ++中说“多态”时所理解的。...通过基指针和引用使用派生的能力。 这是一例子。 假设您有各种猫科动物,例如这些猫科动物, ?...cat,tiger和ocelot的指针递给do_meowing函数,该函数期望指向Felid的指针。...使构造函数显式以避免意外转换始终是一好主意。 同样,如果类为T类型定义了转换运算符,则可以在需要T类型的任何地方使用它。...现在,如果我们有一以int作为参数的print_int函数,我们还可以CrazyInt类型的对象传递给它, #include void print_int(int a) {

    1.4K20

    移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——11.多态

    派生对象d中也有一虚表指针,d对象由两部分构成,一部分继承下来的成员,虚 表指针也就是存在部分的另一部分自己的成员。 2....虚函数表本质存虚函数指针指针数组,一般情况这个数组最后面放了一nullptr。 5....实际我们去验证一下会发现vs下存在代码段的   4.2多态的原理 还记得这里 Func函数Person调用的 Person::BuyTicket, Student调用的Student...这里编译器的监视窗口故意隐藏了这 两函数,也可以认为他的一小bug。那么我们如何查看d的虚表呢?下面我们使用代码打印 出虚表中的函数。 ...答:不能,因为对象中的虚函数表指针在构造函数初始化列表 阶段才初始化的。 7. 析构函数可以是虚函数?什么场景下析构函数虚函数?

    8510

    C语言初阶——函数

    维基百科给出的定义:子程序(function),大型程序中的某部分代码,由一或多个语句块组成。函数部分代码负责完成某项特定任务,而且相对于其他代码比较独立。...常见的C语言库函数大体可分为七:1.IO函数 2.字符串操作函数 3.字符操作函数 4.内存操作函数 5.时间/日期函数 6.数学函数 7.其他库函数 因为库函数有使用标准,所以需要慢慢学习,这里推荐一库函数学习网站...形参实参的一份临时拷贝  注:按F10进入调试模式,调试-窗口-监视即可监视数据,按F11进入被调函数 函数的调用 函数参数在调用时分为两种:值调用与址调用,两者区别比较大,从值改为址也是...值调用 值调用指直接实参的值传递给形参,此时实参与形参之间无关系,相互独立,对形参的改变不会对实参造成影响。...址调用 址调用则是实参的地址传递给形参,既然地址,那就需要用到指针变量,故形参需要用指针接收,当形参拿到实参的地址后,意味着两者之间建立了深度绑定关系,形参的改变会对实参造成影响,不过因为形参实参的一份临时拷贝

    18020

    顺丰科技QT面试题「建议收藏」

    大家好,又见面了,我你们的朋友全栈君。 自定义控件: 应该做过吧?能举几个例子?还有其他? 你觉得自定义控件的方法主要是哪些?...答:从外观设计上:QSS、继承绘制函数重绘、继承QStyle相关重绘、组合拼装等等 从功能行为上:重写事件函数、添加或者修改信号和槽等等 QSS: QSS平时使用的多?能举几个例子?...答:1.QSS统一写在一文件中,通过程序给窗口加载; 2.写成一字符串中,通过程序给窗口加载; 3.需要使用的地方,写一字符串,加载给对象; 4.QT Designer中填写; 事件机制:...: 窗口是否为当前窗口 知道QT事件机制有几种级别的事件过滤?...安装事件过滤器有两步骤: (假设要用A来监视过滤B的事件) 首先调用B的installEventFilter( const QOject *obj ), 以A的指针作为参数.

    73310

    【愚公系列】软考中级-软件设计师 012-程序设计语言基础知识(概述)

    数组相同类型的数据的有序集合,结构体不同类型的数据的组合,联合体一种特殊的结构体,它的所有成员共享一内存空间。指针指针一种特殊的数据类型,它存储了一变量的内存地址。...(Classes):面向对象编程中的基本概念,用于定义对象的属性和行为。可以有多个对象实例,并且可以继承和扩展其他。...2.4 传输成分在程序设计语言中传输成分主要有:数据传输、赋值和输入输出常见的操作,用于处理数据的传递、存储和展示。数据传输:数据传输数据从一位置传递到另一位置的过程。...值调用(Call by Value)指在函数调用时,实际参数的值复制一份传递给形式参数,函数内部对形式参数的修改不会影响到实际参数的值。换句话说,函数内部的操作只是对形式参数的一份拷贝进行的。...址调用(Call by Reference)指在函数调用时,实际参数的地址传递给形式参数,函数内部对形式参数的修改会影响到实际参数的值。换句话说,函数内部的操作直接对实际参数进行修改。

    16811

    QT入门基础(一)

    管理图形用户界面应用程序的控制流和主要设置 nQApplication对象是Qt生命,一程序要确保一直运行,就肯定至少得有一循环,这就是Qt消息循环,在其中完成来自窗口系统和其它资源的所有事件消息处理和调度...public: //parent窗口指针,父窗口对象的指针 //如果parent为0或者nullptr,表示当前窗口对象是一顶层窗口 //顶层窗口即为在任务栏可以找到的窗口...说明: 一按钮其实就是一QPushButton的对象,如果只是创建出对象,无法显示到窗口中的,就需要依赖一窗口,也就是指定一父亲,而调用按钮的show()函数只能让按钮独立显示...利用setParent函数或者按钮创建的时候通过构造函数参,此时我们称两窗口建立了父子关系 在有父窗口的情况下,窗口调用show会显示在父窗口中,如果没有父窗口,那么窗口调用show显示的会是一顶层的窗口...我们向某个窗口中添加了一按钮或者其他控件(建立父子关系),当用户关闭这个窗口的时候,该窗口就会被析构,之前添加到他上边的按钮和其他控件也会被一同析构 Qt 引入对象树的概念,在一定程度上解决了内存问题

    1.2K30

    C语言——指针(2)

    前面我们已经了解了指针的基本概念以及简单的使用,那么什么问题一定要使用指针解决呢? 我们来接着往下学习: 值调用和址调用 问题:写一函数,交换两变量的值。...我们可以看到在main函数内部,创建了a和b,a的地址0x009af998,b的地址0x009af98c,在调用Swap函数时,a和b传递给了Swap函数,在Swap函数内部创建了形参x和y接收a...Swap函数在使⽤的时候,把变量本⾝直接传递给了函数,这就是值调⽤。 结论:实参传递给形参的时候,形参会单独创建⼀份临时空间来接收实参,对形参的修改不影响实 参。...调⽤Swap函数的时候变量的地址 递给了函数,这就是址调⽤。...,那么这里的字符指针存放的一整个字符串

    7610

    【C语言】深入解开指针(二)

    ⽤和址调⽤ 学习指针的⽬的使⽤指针解决问题,那什么问题,⾮指针不可呢?...在调⽤Swap1函数时,a和b传递给了Swap1函数,在Swap1函数内部创建了形参x和 y 接收a和b的值,但是x的地址0x008ffdc4,y的地址0x008ffdc8,x和y确实接收到了a和...Swap1函数在使⽤的时候,把变量本⾝直接传递给了函数,这种调⽤函数的⽅式我们之前在函数的时候就知道了,这种叫值调⽤。...这里我们要用取地址符号把a和b的值传过去 printf("交换后:a=%d b=%d\n", a, b); return 0; } 我们可以看到实现成Swap2的⽅式,这⾥调⽤Swap2函数的时候变量的地址传递给了函数...如果你觉得我的文章对你的有小小的帮助,可以给予博小小的赞,感谢您的观看!

    11410

    【嵌入式开发】C语言 内存分配 地址 指针 数组 参数 实例解析

    函数参数的值调用和址调用 (1) 值调用 和 址调用 值调用 : 以值的方式参数传递给函数, 不能直接修改函数中变量的值, 仅仅是副本传递给了函数; 址调用 : 变量的指针递给函数...a = 5, b = 10 执行 swap_2 函数, a = 5, b = 10 示例解析 :  -- 值调用 : swap_1 值调用, 传入的 main 函数中的 a b 两变量的副本..., 因此函数执行完毕后, 函数中的值不变的; -- 址调用 : swap_2 址调用, 传入的 a , b 两变量的地址 &a, &b, 当在swap_2 中进行修改的时候, 函数中的...sizeof(int) * i 个字节; 数组赋值给指针的途径 :  -- 数组第一元素地址赋值给指针变量 : p = &a[0]; -- 数组地址赋值给指针变量 : p = a; 指针 和 数组...; a = p 和 a++ 会报错; 数组参数 :  -- 形参指针 : 数组作为参数传递给函数的时候, 传递的数组的首地址, 传递地址, 形参指针; 数组参数示例 :  -- 函数参数数组

    3.9K20
    领券