zoukankan      html  css  js  c++  java
  • 调用构造函数进行类型转换(显式和隐式)

    代码示例

     1 #include <iostream>
     2 using namespace std;
     3 class A
     4 {
     5 public:
     6     A(int x){ i = x; cout << "构造函数执行!" << i << endl; }//可以关键字explicit用来禁止隐式转换,然而显式转换还可以用
     7     ~A(){ cout << "析构函数执行!" << i << endl; }
     8     void get(){ cout << i << endl; }
     9 private:
    10     int i;
    11 };
    12 int main()
    13 {
    14     A a(99);//调用构造函数A(int x)输出"构造函数执行!99" 
    15     a.get();
    16     a = 1000;//隐式转换,等价于显式转换中的:a=A(1000);
    17     a.get();
    18     a = A(2); //调用构造函数A(int x)输出"构造函数执行!2"
    19                 //生成A类临时对象赋值给a
    20                 //赋值之后,调用~A(),临时对象被销毁,输出"析构函数执行!2"
    21     a.get();//调用get()函数输出2
    22             //程序退出,销毁a对象,调用~A(),输出"析构函数执行!2"
    23     A b(35); //调用构造函数A(int x)输出"构造函数执行!35
    24             //函数结束时,析构顺序与构造顺序正好相反,先析构对象b再析构第一个创建的对象a
    25             //调用对象b的析构函数,输出"析构函数执行!35"
    26             //调用对象a的析构函数,输出"析构函数执行!2"
    27     return 0;
    28 }

    输出结果

  • 相关阅读:
    Dubbo监控中心
    Dubbo 提供者配置&测试
    IDEA中pom.xml依赖另一个项目
    MBG
    查询优化技术之多级缓存
    分布式扩展流程
    Redis取值时取出的是HashMap
    linux执行sql
    Git的使用
    405
  • 原文地址:https://www.cnblogs.com/table/p/4705334.html
Copyright © 2011-2022 走看看