当前位置: 首页 > wzjs >正文

湘潭做网站建设的公司正规赚佣金的平台

湘潭做网站建设的公司,正规赚佣金的平台,东莞建设工程造价管理网站,wordpress 表格 css文章目录 1. 嵌套类的定义2. 循环依赖3. 样例分析 1. 嵌套类的定义 如果类A中包含类B,则称为嵌套类。 嵌套类在头文件中定义时,需要前向声明被嵌套的类。并且在编译中如果被嵌套类的方法没有在CPP文件中实现,会报错方法未定义。 2. 循环依…

文章目录

    • 1. 嵌套类的定义
    • 2. 循环依赖
    • 3. 样例分析

1. 嵌套类的定义

如果类A中包含类B,则称为嵌套类。

嵌套类在头文件中定义时,需要前向声明被嵌套的类。并且在编译中如果被嵌套类的方法没有在CPP文件中实现,会报错方法未定义。

2. 循环依赖

如果类A包含类B,类B包含类A,则会出现循环依赖问题。具体分析如下:

2.1 直接包含对象成员会导致编译错误

若类A和类B直接包含对方的对象成员,则编译器无法处理:

// A.h
#include "B.h"
class A { B b; }; // 错误:B是不完整类型// B.h
#include "A.h"
class B { A a; }; // 错误:A是不完整类型
  • 原因:对象成员需要编译器确定类的完整大小,而循环依赖导致两个类的定义互相等待,形成无限递归。
  • 结果:编译器报错(“incomplete type”),因为类在定义时未完全可见。

2.2 使用指针或引用可避免问题

通过前向声明指针/引用可解决循环依赖:

// A.h
class B; // 前向声明
class A { B* b_ptr; }; // 仅需B的声明// B.h
class A; // 前向声明
class B { A* a_ptr; }; // 仅需A的声明

底层逻辑

  • 前向声明告诉编译器类名存在,但暂不提供细节。
  • 指针/引用的大小固定(如4/8字节),无需类的完整定义。
  • 类的完整定义可延迟到实现文件(如.cpp)中再引入,此时依赖已解析。

2.3 何时需要完整类型定义?

虽然指针/引用允许不完整类型,但以下操作仍需完整定义:

  • 访问成员变量/函数:如b_ptr->method()B的完整定义。
  • 创建对象/析构对象:如new Bdelete b_ptrB的定义。
  • 使用智能指针std::unique_ptr<B>在析构时需完整定义,需在实现文件中包含头文件。

3. 样例分析

#include <iostream>using namespace std;class B;class A{
public:A(int x) : a(x), bb(nullptr) { }B* bb;int a;void print() {cout << a << "AAA\n";} 
}; class B{
public:B(int x) : b(x), aa(nullptr) { }A* aa;int b;void print() {cout << b << "BBB\n";} 
};int main()
{/*A* a = new A(1);B* b = new B(2);cout << a->a << ' ' << b->b << endl;cout << a->bb->b << ' ' << b->aa->a << endl;*/A* a = new A(1);B* b = new B(2);a->bb = new B(3);  // 为A的bb分配B对象b->aa = new A(4);  // 为B的aa分配A对象cout << a->bb->b << endl; // 输出3cout << b->aa->a << endl; // 输出4// 释放所有内存delete a->bb;delete b->aa;delete a;delete b;return 0;return 0;
}

通过以上代码分析:

  1. A类包含B类指针,B类包含A类指针,编译不会报错,但如果没有初始化指针为nullptr,则指针会变为野指针(初始随机地址,分配的地址,没有构造实际对象)。此时运行中对其进行解引用(35、36行)则会导致随机值或程序崩溃。
  2. 在构造函数中将嵌套的类指针初始化为nullptr,在实际运行时显式创建并绑定对象(40、41行)
http://www.dtcms.com/wzjs/201266.html

相关文章:

  • 公司建网站的步骤是什么贵阳百度seo点击软件
  • 耒阳网站建设2345网址导航
  • 开发商虚假宣传怎么赔偿重庆百度快照优化排名
  • 建材做网销哪个网站好丹东网站seo
  • 大型租车门户网站商业版源码做网页怎么做
  • 聊城做网站比较不错的公司线上宣传渠道
  • 良乡网站建设软文有哪些发布平台
  • 百度推广竞价网站推广seo教程
  • 服装定制公司关键词优化营销
  • 做电商网站一般需要什么流程重庆做seo外包的
  • 网站建设广州杭州seo网站建设靠谱
  • 网站一级导航怎么做品牌推广百度seo
  • wordpress大型门户关键词优化排名软件流量词
  • 快速排名优化个人如何做seo推广
  • 广州专业网站改版方案河南疫情最新情况
  • 网站建设公司新报价百度官方网址
  • 网站按照谁建设 谁负责网站优化推广平台
  • 天元建设集团有限公司青岛第一建筑工程分公司seo咨询邵阳
  • 定州网站建设软文广告案例
  • wordpress腾讯云 COS草根seo视频大全
  • 怎样做网站赚点击量的钱灰色词排名接单
  • 萍乡政法委网站建设招投标互联网金融
  • 做网站的成本费用seo分析
  • 查看网站信息图标怎么做太原建站seo
  • cms做门户网站全网整合营销
  • 武汉市网站建设公司怎么做竞价托管
  • 做金融网站最好的搜索引擎
  • 如题,HTML如何将两张图片_一张放在网站顶部做背景,另一张放在尾部做背景?游戏优化大师下载安装
  • 做网站能挣多少钱短网址生成器免费
  • 怎么把自己做的网站发到网上通过网址来查看武汉网络关键词排名