构造函数的三个作用
1.构造对象
2.对象初始化
3.类型转换 

//Test1.h
#include<iostream>
using namespace std;
//构造对象
//初始化对象
//类型装换
class ST
{
private:
int a;
long b;
public:
ST(int a=0);//缺省的构造函数只允许有一个
ST(long b);
ST(int a, long b);
~ST()
{
cout<<"ST was Free. "<<this<<endl;
}
operator int();
operator long();
int Get_a();
void fill(int a, long b);
};
ST::ST(int a)
{
cout<<"ST was Built. "<<this<<endl;
this->a = a;
}
ST::ST(int a, long b)
{
cout<<"ST was Built. "<<this<<endl;
this->a = a;
this->b = b;
}
ST::ST(long b)
{
cout<<"ST was Built. "<<this<<endl;
this->b = b;
}
ST::operator int()
{
return this->a;
}
ST::operator long()
{
return this->b;
}
int ST::Get_a()
{
return this->a;
}
void ST::fill(int a, long b)
{
this->a = a;
this->b = b;
}

 

//Test.cpp
#include<iostream>
#include"Test1.h"
using namespace std;
void main()
{
ST st;
int a1,a2,a = 100;
long b1,b = 1000;
st = a;//此处为一个隐式转换,产生了一个中间变量,构造函数使a转换为ST类型,然后用此中间变量给st.a赋值
//这样的强制转换是对构造函数有要求的,若构造函数无参数或者其参数有多个则不能进行转换
a = 101;//值得关注的一个问题是,a被构造函数转换并赋值给st.a后,其便会被析构掉,不需要等到程序结束
st = (ST)a;//也可以将其显式的写出来,只要其构造函数无explicit前缀,则显式隐式都可以,若含有exitplic前缀则必须显式类型转换
st = b;//有两个重载的构造函数可以进行转换,转化时系统可由构造函数参数列表自动识别为其选择构造函数
//由于是st接收转换类型后的b值,若构造函数内仅对一个私有数据成员进行赋值,则其他私有成员皆为随机值
//这也就是为何st先接收a的赋值,再接收b的赋值后其私有数据成员st.a变为随机值的原因 st.fill(10,20);
a1 = st;//C++没有默认的从对象到数据类型的转换,若想要转换则必须写一个方法,或者使用operator将类型转换的方法写出来
a2 = st.Get_a();//此方法和上一行的代码效果相同
b1 = st;
cout<<"a1 = "<<a1<<" a2 = "<<a2<<endl;
cout<<"b1 = "<<b1<<endl;
}

  运行结果

 

C++构造函数和析构函数初步认识(2)的更多相关文章

  1. C++构造函数和析构函数初步认识

    构造函数 1.构造函数与类名相同,是特殊的公有成员函数.2.构造函数无函数返回类型说明,实际上构造函数是有返回值的,其返回值类型即为构造函数所构建到的对象.3.当新对象被建立时,构造函数便被自动调用, ...

  2. .NET 基础 一步步 一幕幕[面向对象之构造函数、析构函数]

    构造函数.析构函数 构造函数: 语法: //无参的构造函数 [访问修饰符] 函数名() :函数名必须与类名相同. //有参的构造函数 [访问修饰符] 函数名(参数列表):函数名必须与类名相同. 作用: ...

  3. 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成员)

    [源码下载] 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成 ...

  4. C++构造函数、析构函数与抛出异常

    [本文链接] http://www.cnblogs.com/hellogiser/p/constructor-destructor-exceptions.html [问题] 构造函数可以抛出异常么?析 ...

  5. python中的构造函数和析构函数

    python中的特殊方法,其中两个,构造函数和析构函数的作用: 比说“__init__”这个构造函数,具有初始化的作用,也就是当该类被实例化的时候就会执行该函数.那么我们就可以把要先初始化的属性放到这 ...

  6. 内存的分配VS回收&构造函数VS析构函数

    之前有一个问题一直困扰着我,就是一个变量出了作用域,我以为这个变量的内存就被回收了,其实不是这样的,昨天问了一个高手,才豁然开朗,自己在看相关代码的反汇编代码,才知道原来真是这样就.这个问题,我想简单 ...

  7. C++C++中构造函数与析构函数的调用顺序

    http://blog.csdn.net/xw13106209/article/details/6899370 1.参考文献 参考1: C++继承中构造函数.析构函数调用顺序及虚函数的动态绑定 参考2 ...

  8. php 的 构造函数 和 析构函数

    构造函数 在C++ java里的应用及其普遍,今天好好研究了一下 php 的 构造函数 和 析构函数 构造函数 和 析构函数 构造函数 void __construct ([ mixed $args ...

  9. C++-理解构造函数、析构函数执行顺序

    先初始化序列中的函数调用,如果基类构造函数为非引用传递,则引起参数的拷贝构造 再: 先类内的成员构造函数(拷贝/默认),再类的构造函数:先基类,再派生类: 本文主要说明对象创建时构造函数的执行顺序,对 ...

随机推荐

  1. i love dingning

    "如果你爱一个人,不是下课给人家买买水,不是短信发来发去,也不是周末一起出来唱唱歌聊聊天吃吃饭,而是做一个出色的人.以后的以后,可能还有别的人爱她,你要做的,是把别人都比下去.你要变得优秀, ...

  2. Get value from agent failed: cannot connect to [[192.168.8.102]:10050]: [113] No route to host

    192.168.8.102主机down掉,开机就可以

  3. 议题解析与复现--《Java内存攻击技术漫谈》(二)无文件落地Agent型内存马

    无文件落地Agent型内存马植入 可行性分析 使用jsp写入或者代码执行漏洞,如反序列化等,不需要上传agent Java 动态调试技术原理及实践 - 美团技术团队 (meituan.com) 首先, ...

  4. PTA 树的同构 (25分)

    PTA 树的同构 (25分) 输入格式: 输入给出2棵二叉树树的信息.对于每棵树,首先在一行中给出一个非负整数N (≤10),即该树的结点数(此时假设结点从0到N−1编号):随后N行,第i行对应编号第 ...

  5. K8S 部署 SpringBoot 项目(一篇够用)

    现在比较多的互联网公司都在尝试将微服务迁到云上,这样的能够通过一些成熟的云容器管理平台更为方便地管理微服务集群,从而提高微服务的稳定性,同时也能较好地提升团队开发效率. 但是迁云存在一定的技术难点,今 ...

  6. 准备 dubbo 学习目录

    1. dubbo 背景及原理2. dubbo 架构分析4. dubbo 设计模式分析5. dubbo 实战使用6. dubbo 优化

  7. 测试平台系列(79) 编写Redis配置功能(下)

    大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持. 欢迎关注我的公众号测试开发坑货,获取最新文章教程! 回顾 上一节我们提出了优化Dao ...

  8. [loj2392]烟花棒

    显然,有以下三个性质(思路): 1.烟花传递总是在烟花将要燃尽时将烟花恰传给另一个人 2.烟花不燃烧的人总是向烟花正在燃烧的人靠拢,并且重合后会一直跟着(燃尽时替上) 3.烟花正在燃烧的人总是向下一个 ...

  9. [atAGC054E]ZigZag Break

    结论:(不妨假设$p_{1}<p_{n}$)$\{p_{i}\}$合法当且仅当$\exists 1\le i\le n-1$,使得$p_{1}\ge p_{i}$且$p_{i+1}\ge p_{ ...

  10. [loj6271]生成树求和

    将每一位拆开考虑,即不妨假设$0\le c<3$ 考虑矩阵树定理,即统计所有生成树边权乘积的和,但我们这里要将边权相加,很明显将其作为幂次(如果作为$cx+1$无法对3取模) 更具体的,也就是将 ...