C++隐式转换
2015-09-22 16:37
351 查看
#include <iostream> using namespace std; class A { int a; public: A(int n):a(n) { cout << "Constructor!" << endl; } ~A() { cout << "Destructor!" << endl; } }; int main() { A a = 10; return 0; }
程序输出:
Constructor!
Destructor!
A a = 10;这样的语法是通过的,为什么?由于发生了构造函数的隐式转换,隐式转换这样的规则同意用一个參数来初始化对象,这会调用类中带有一个參数的构造函数,这个參数也能够有默认值 仅仅要有一个參数即可。
另外,加上explicitkeyword。能够消除这种隐式转换,在上面的构造函数前面加上explicitkeyword,你会发现编译失败。
相关文章推荐
- 深入解析C++中类的多重继承
- Effective C++——条款52(第8章)
- C++设计模式——抽象工厂模式
- C++替换字符
- MD5算法的C++实现
- vector简单应用
- 简单介绍C++编程中派生类的析构函数
- C语言第二节-关系运算符,switch,if
- C语言第一节-进制,运算符,输入输出
- 解析C++中多层派生时的构造函数及一些特殊形式
- c++中try catch的用法
- hdu1695GCD(莫比乌斯反演初步)
- Visual Studio 2015专业版创建Win32控制台应用程序,C,C++源文件
- C++设计模式——观察者模式
- C++多线程Singleton模式
- 高质量C++/C编程指南-第7章-内存管理(3)
- C++设计模式——单例模式
- 深入解析C++中派生类的构造函数
- 实用工具——ACM工程代码.cpp/.java化
- 多线程锁的一点测试