环境:Win7x64、Qt5.3.2 MSVC2010 OpenGL、vs2010

1、ZC:在 构造函数 中,基类访问子类的成员 会报内存错误,如果访问的是 基本类型的话(如int) 可能还不会出错,如果访问的是 类似 QList<Tbase*>类型的成员的话 就会出错。

  本类构造函数 访问 本类的成员或者基类的成员的话,不会出错(∵ 也就是这么做的,如初始化成员变量)

  猜想:本类访问子类的 成员变量的时候,可能有些成员变量还未分配好空间??(反正这样做就是不可靠...)

2、测试代码:

#include <QDebug>
#include <QMap> MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
} MainWindow::~MainWindow()
{
delete ui;
} class TA; class Tbase
{
public:
Tbase(); public:
int FiBase; public:
QList<Tbase*> FlistBase;
void AddBase(Tbase *_p);
}; class TA :public Tbase
{
public:
TA():Tbase(){} public:
int FiA;
void SetA(int _i) {FiA = _i;} public:
QList<Tbase*> FlistA;
void AddA(Tbase *_p);
}; Tbase::Tbase()
{
((TA*)this)->FiA = ;
((TA*)this)->SetA( ); this->AddBase(this);
((TA*)this)->AddA(this);
} void Tbase::AddBase(Tbase *_p)
{
qDebug() << "Tbase::AddBase(..) - 1";
if (- == FlistBase.indexOf(_p))
{
qDebug() << "Tbase::AddBase(..) - 2";
FlistBase.append(_p);
qDebug() << "Tbase::AddBase(..) - 3";
}
qDebug() << "Tbase::AddBase(..) - 4";
} void TA::AddA(Tbase* _p)
{
qDebug() << "TA::AddA(..) - 1";
if (- == FlistA.indexOf(_p))
{
qDebug() << "TA::AddA(..) - 2";
FlistA.append(_p);
qDebug() << "TA::AddA(..) - 3";
}
qDebug() << "TA::AddA(..) - 4";
} void MainWindow::on_pushButton_clicked()
{
TA a;// = new TA;
qDebug() << a.FiA;
}

3、控制台输出:

Starting E:\ZZ_Qt5\Qt532_vs2010\build-Test2-Desktop_Qt_5_3_MSVC2010_OpenGL_32bit-Release\release\Test2.exe...
Tbase::AddBase(..) - 1
Tbase::AddBase(..) - 2
Tbase::AddBase(..) - 3
Tbase::AddBase(..) - 4
TA::AddA(..) - 1
TA::AddA(..) - 2
程序异常结束。
E:\ZZ_Qt5\Qt532_vs2010\build-Test2-Desktop_Qt_5_3_MSVC2010_OpenGL_32bit-Release\release\Test2.exe crashed

4、

5、

C++.构造函数(超出范围)_01的更多相关文章

  1. javascript笔记—— 构造函数

    出处:http://www.cnblogs.com/RicCC/archive/2008/02/15/JavaScript-Object-Model-Execution-Model.html 数据类型 ...

  2. C++的构造函数和析构函数

    1.构造函数和析构函数为什么没有返回值? 构造函数和析构函数是两个非常特殊的函数:它们没有返回值.这与返回值为void的函数显然不同,后者虽然也不返回任何值,但还可以让它做点别的事情,而构造函数和析构 ...

  3. BigInteger构造函数解析

    1.BigInteger(byte[] val)这个构造函数用于转换一个字节数组包含BigInteger的二进制补码,以二进制表示成一个BigInteger. (用字节数组中值的ASCII码构造Big ...

  4. C++:复制构造函数在什么时候被调用?

    这个问题不是疑问了,查了一下国外网站,总结一下.假设Person是一个类,复制构造函数的调用会在以下几种情况下发生: 1.对象在创建时使用其他的对象初始化 Person p(q); //此时复制构造函 ...

  5. C#静态构造函数和析构函数片段化认知

    一.静态构造函数 一个类可以有静态构造函数,实现如下源代码.静态构造函数有以下特性: 1).静态构造函数不能有修饰符(润饰符) 2).静态构造函数不能有参数 3).不能被调用——在实例化类的时候,静态 ...

  6. C++ Primer 学习笔记_54_类和数据抽象 --拷贝构造函数、赋值运算符

    拷贝控制 --复制构造函数.赋值操作符 引言: 当定义一个新类型时,须要显式或隐式地指定复制.赋值和撤销该类型的对象时会发生什么– 复制构造函数.赋值操作符和析构函数的作用!      复制构造函数: ...

  7. BZOJ_4476_[Jsoi2015]送礼物_01分数规划+单调队列

    BZOJ_4476_[Jsoi2015]送礼物_01分数规划+单调队列 Description JYY和CX的结婚纪念日即将到来,JYY来到萌萌开的礼品店选购纪念礼物. 萌萌的礼品店很神奇,所有出售的 ...

  8. C++构造函数和析构函数,以及构造函数特殊成员变量和函数的初始化

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  9. JavaScript中的内置对象-8--1.Array(数组)-Array构造函数; 数组的栈方法; 数组的转换方法; 数组的操作方法; 删除-插入-替换数组项; ECMAScript为数组实例添加的两个位置方法;

    JavaScript内置对象-1Array(数组) 学习目标 1.掌握任何创建数组 2.掌握数值元素的读和写 3.掌握数组的length属性 如何创建数组 创建数组的基本方式有两种: 1.使用Arra ...

随机推荐

  1. Spring MVC 编程流程步骤

    Spring MVC 编程流程步骤 1. 建立Maven工程 2. 添加Spring MVC依赖 <dependencies> <dependency> <groupId ...

  2. Cheerleaders UVA - 11806

    题目大意是: 在一个m行n列的矩形网格中放置k个相同的石子,问有多少种方法?每个格子最多放一个石子,所有石子都要用完,并且第一行.最后一行.第一列.最后一列都要有石子. 容斥原理.如果只是n * m放 ...

  3. Kattis之旅——Perfect Pth Powers

    We say that x is a perfect square if, for some integer b, x = b2. Similarly, x is a perfect cube if, ...

  4. DATAPUMP PERFORMANCE EXPDP IS VERY SLOW 10.2.0.4 TO 11.2.0.2

    APPLIES TO: Oracle® Database - Enterprise Edition - Version 10.2.0.4 to 11.2.0.2 [Release 10.2 to 11 ...

  5. 2018-2019-1 20189206 《Linux内核原理与分析》第三周作业

    linux内核分析学习笔记 --第二章 操作系统是如何工作的 计算机的"三大法宝" 程序存储计算机 即冯诺依曼体系结构,基本上是所有计算机的基础性的逻辑框架 函数调用堆栈 高级语言 ...

  6. 从输入URL到页面显示发生了什么

    阅读目录 1.输入地址 2.浏览器查找域名的 IP 地址 3.浏览器向 web 服务器发送一个 HTTP 请求 4.服务器的永久重定向响应 5.浏览器跟踪重定向地址 6.服务器处理请求 7.服务器返回 ...

  7. 数组中的元素 增加push用法 unshift() 方法 和减少pop() 方法 shift() 和其他位置增删 splice() 方法 join() 方法 reverse() 方法 sort() 方法

    push用法 push 英 [pʊʃ] 美 [pʊʃ] vt. 推,推动; vt. 按; 推动,增加; 对…施加压力,逼迫; 说服; n. 推,决心; 大规模攻势; 矢志的追求 定义和用法 push( ...

  8. bzoj1741 [Usaco2005 nov]Asteroids 穿越小行星群 最小点覆盖

    链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1741 思路 消除所有的小行星 每个点(x,y)只有选择x或者y才能被覆盖 二分图最小点覆盖= ...

  9. HihoCoder 1634 Puzzle Game(最大子矩阵和)题解

    题意:给一个n*m的矩阵,你只能选择一个格子把这个格子的数换成p(也可以一个都不换),问最大子矩阵和最小可能是多少? 思路: 思路就是上面这个思路,这里简单讲一下怎么n^3求最大子矩阵和:枚举两行(或 ...

  10. 第一章(欢迎进入node.js世界)

    本章内容 1:Node.js是什么 2:服务器端javascript 3:node的异步和事件触发本质 4:node为谁而生 5:node程序示例 1.1 node.js他的首次亮相是在2009年,非 ...