为了避免隐式转换,可用 explicit 关键字进行声明:#include <cstring>#include <iostream>using namespace std;class A { public: int var; explicit A(int tmp) { var = tmp; cout << var << endl; }};int main() { A ex(100); A ex1 = 10; // error: conversion from 'int'...
上述代码中,A ex = 10; 在编译时,进行了隐式转换,将 10 转换成 A 类型的对象,然后将该对象赋值给 ex, (个人觉得文章这里存在错误,当A ex=10进行编译时,相当于A ex(10),调用构造函数,进行了隐式转换,但是并不会创建匿名对象赋值给ex) 等同于如下操作: 为了避免隐式转换,可用 explicit 关键字进行声明: ...