• 面向对象程序设计-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 };
  • 相关阅读:
    git 本地仓库操作
    git学习一——Pro-Git
    React Router
    webpack详述
    webpack入门
    折半查找法
    String的常见操作(面试题)
    Java集合(五)—HashMap源码
    Java常见操作符
    Java随机数
  • 原文地址:https://www.cnblogs.com/denggelin/p/5639273.html
Copyright © 2020-2023  润新知