C++在构造函数中调用构造函数
为什么80%的码农都做不了架构师?>>>
C++如何在一个构造函数中调用另一个构造函数,在一篇博文中看到了这样的一道题:
#include <stdlib.h>
#include <iostream>
using namespace std;struct CLS
{int m_i;CLS( int i ) : m_i(i){}CLS(){CLS(0);}
};
int main()
{CLS obj;cout << obj.m_i << endl;system("PAUSE");return 0;
}
问这道题的输出是多少,这道题里就有一个构造函数调用构造函数的细节,这道题的结果是不定的,不一定为0。
为什么会不是0呢?其实这是一个内存分配的问题,这里就不多说了,可以去这篇blog看一下http://www.cnblogs.com/chio/archive/2007/10/20/931043.html。
正确的方式是
struct CLS
{int m_i;CLS( int i ) : m_i(i){}CLS(){new (this)CLS(0);}
};
需要使用new,也就是用当前对象来调用构造函数CLS(int x)构建一个“新”对象。
转载于:https://my.oschina.net/bobwei/blog/654972
C++在构造函数中调用构造函数相关推荐
- 构造函数中调用构造函数new和delete使用小结
malloc free 是C语言的函数 new delete 是C++的操作符 #include "iostream" using namespace std;//构造中调用构造是 ...
- C++ 不能在构造函数中调用构造函数
#include <iostream> using namespace std;class MyTest{public:MyTest() {}MyTest(int a, int b, in ...
- C++对象模型4——多重继承的对象内存模型、vptr与vtbl的创建与重置的时机、不要在含有虚函数的类的构造函数中调用memset
一.多重继承的对象内存模型 class Base1 { public:virtual void f() {cout << "base1::f()" << e ...
- 【C++】45.尽量不要在构造函数中调用函数或开启线程
我们有时候会有些不规范的编程习惯,如,在构造函数中开启detach分离线程,或者在构造函数中写一个初始化函数,在这个初始化函数中开启detach分离线程.这样做会有意想不到的程序崩溃问题,而且还不好排 ...
- android+jni+构造函数,在JNI中调用构造函数失败Android
我想从我的JNI Android代码调用构造函数;但不知何故,它失败,以下例外.. 我相信我失去了一些非常小的东西;但我无法弄清楚......任何人都可以请指出?在JNI中调用构造函数失败Androi ...
- C# 构造函数中调用虚函数
C# 构造函数中调用虚函数 using System; using System.Diagnostics; using System.Text; using System.Collections; u ...
- C++学习笔记-----在一个构造函数中调用另一个构造函数
在构造函数中调用另一个构造函数如果一不注意就会有无限递归的危险,而且构造函数的参数的不同也决定了调用的不同,所以特意总结了一下哪些形式的调用时允许的: 首先假设构造函数调用时参数都是外部的变量,而不是 ...
- [react] 在构造函数中调用super(props)的目的是什么?
[react] 在构造函数中调用super(props)的目的是什么? 这是ES6的语法.class组件继承自React.Component,super(props)之后,有以下几个作用: 初始化pr ...
- c++day03 构造中调用构造函数
大家好,我是阿林.今天我来分享c++的相关的匿名函数和构造函数的内容. 本博客重点说明在构造函数中使用构造函数将会出现的问题. 在构造函数中使用构造函数,这嵌套在里面的构造函数是相当于是一个匿名的构造 ...
最新文章
- Scala学习第五天数组
- Spring Boot ES 实战,值得参考!
- Java泛型失效的两种情况
- 如何编写一份SOP?
- 画师id_100位插画师是怎么过日子的?
- print的describe的展示全部数据_大数据项目中的QA需要迎接新的挑战
- log4j性能 slf4j_Log4j 2:性能接近疯狂
- Cmake参数详细介绍
- python 身体BMI指数判断
- 克隆手游是如何“杀”死独立游戏开发的?
- 转豆瓣--梁海棠尽管死了,但却占领了陈少杰的身心。乔燕尽管还…
- ENL3010 浪涌电流测试系统
- 管理之路:你的格局,决定你的结局
- 计算机中常用源码,什么是源码
- java.io.EOFException
- 【逆向】i春秋入门实战——crack_me
- JavaScript - canvas - 镜像图片
- 基于脉振高频电压注入的永磁同步电机无感FOC
- 基于Dragonboard 410c的PMIC简介
- Web开发中软件工程艺术(Web程序员请进来谈谈,特别是有大型门户网站后台开发的程序员)