zoukankan      html  css  js  c++  java
  • 面向对象程序设计-C++_课时30运算符重载——基本规则_课时31运算符重载——原型_课时32运算符重载——赋值_课时33运算符重载——类型转换

    区分初始化,赋值

     1 #include <iostream>
     2 using namespace std;
     3 
     4 class Fi
     5 {
     6 public:
     7     Fi() {}//1构造函数
     8 };
     9 
    10 class Fee
    11 {
    12 public:
    13     Fee(int) {}//2构造函数
    14     Fee(const Fi&) {}//3构造函数
    15 };
    16 
    17 void main()
    18 {
    19     Fee fee = 1;//2构造函数
    20     Fi fi;//1构造函数
    21     Fee fum = fi;//3构造函数
    22     fum = fi;//赋值
    23 
    24     system("pause");
    25 };

    C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。

     1 #include <iostream>
     2 using namespace std;
     3 
     4 class One
     5 {
     6 public:
     7     One() {}
     8 };
     9 
    10 class Two
    11 {
    12 public:
    13     explicit Two(const One&) {}
    14 };
    15 
    16 void f(Two) {}
    17 
    18 void main()
    19 {
    20     One one;
    21 
    22     //f(one);//error C2664: “void f(Two)”: 无法将参数 1 从“One”转换为“Two”
    23 
    24     f(Two(one));//构造一个类Two
    25 
    26     system("pause");
    27 };
  • 相关阅读:
    实例之内存体系结构(1)--- 共享池(Share pool)
    体系结构 --- 实例和数据库
    分页查询与TOP-N特性
    MERGE 和 WITH语法
    外部表
    SQL语句(9)--- 同义词
    SQL语句(8)--- 索引
    SQL语句(7)--- 视图
    SQL语句(6)--- 约束
    死锁的产生与解决
  • 原文地址:https://www.cnblogs.com/denggelin/p/5639273.html
Copyright © 2011-2022 走看看