环境: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. 如何获取STM32 MCU的唯一ID及应用(转)

    源: 如何获取STM32 MCU的唯一ID

  2. GO语言学习笔记之Linux环境下安装GO语言

    0x00 安装环境和GO版本 本篇是源码安装,非使用包管理工具安装. # Centos 7.4 # GO v1.11.2 0x01 下载GO安装包 # wget https://dl.google.c ...

  3. RequestBody使用

    @RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的); GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是 ...

  4. 从percona server 5.7换到mariadb 10.2

    过去两年半一直推荐使用percona server,今天开始,因为一些mysql迟迟不不愿意支持的特性,打算换回mariadb 10.2了,具体哪些不说了,总之非常关键,mariadb都支持一两年了, ...

  5. windows下常用linux对应工具

    tail 可从http://files.cnblogs.com/hantianwei/tail.zip下载,解压后exe,如下: e:\>tail -fn 300 tool-slow.logus ...

  6. RAFT实践

    1.  raft org 2. paper 3. animation 4. python examples Raft-python  这个不是很好用. simpleRaft Raft算法分析与理解  ...

  7. 集合框架-Map集合

    * Map集合和Collection集合的区别? * Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的.可以把这个理解为:夫妻对 * Collection集合存储元素是单独出现的, ...

  8. How to install Maven on Windows

    To install Apache Maven on Windows, you just need to download the Maven’s zip file, and Unzip it to ...

  9. topcoder srm 685 div1

    problem1 link 依次枚举每个元素$x$,作为$S$中开始选择的第一个元素.对于当前$S$中任意两个元素$i,j$,若$T[i][j]$不在$S$中,则将其加入$S$,然后继续扩展:若所有的 ...

  10. 赞 ( 84 ) 微信好友 新浪微博 QQ空间 180 SSD故事会(14):怕TLC因为你不了解!【转】

    本文转载自:https://diy.pconline.com.cn/750/7501340.html [PConline 杂谈]从前,大家谈TLC色变:如今,TLC攻占SSD半壁江山.是的,这个世界就 ...