c++————学习记录(一)
2017-10-07 17:09
190 查看
学习c++呢,是在学校里学的入门的入门的入门级别,而且现在也忘得差不多了,又有点懒,就看到啥不会就边学习边记录下来。
explicit HelloDialog(QWidget *parent = 0); //explicit防止隐式转换
关键字explicit可以使得构造函数避免隐式转换,至于啥时候隐式转换有危害,暂时不知。
这是在Qt上看到的,原来是c++的语法知识,看来真的是入门的入门的入门水平,只能慢慢来了。然后上网查了下,觉得这个讲得还行,至于到底为什么,还不是很清楚。
class Test1
{
public:
Test1(int n) { num = n; } //普通构造函数
private:
int num;
};
class Test2
{
public:
explicit Test2(int n) { num = n; } //explicit(显式)构造函数
private:
int num;
};
int main()
{
Test1 t1 = 12; //隐式调用其构造函数,
成功
Test2 t2 = 12; //编译错误,不能隐式调用其构造函数
Test2 t3(12); //显示调用成功
return 0;
}
Test1的构造函数带一个int型的参数,代码19行会隐式转换成调用Test1的这个构造函数。而Test2的构造函数被声明为explicit(显式),这表示不能通过隐式转换来调用这个构造函数,因此代码20行会出现编译错误。
普通构造函数能够被隐式调用。而explicit构造函数只能被显示调用。
http://blog.csdn.net/sprintfwater/article/details/8757223
explicit HelloDialog(QWidget *parent = 0); //explicit防止隐式转换
关键字explicit可以使得构造函数避免隐式转换,至于啥时候隐式转换有危害,暂时不知。
这是在Qt上看到的,原来是c++的语法知识,看来真的是入门的入门的入门水平,只能慢慢来了。然后上网查了下,觉得这个讲得还行,至于到底为什么,还不是很清楚。
class Test1
{
public:
Test1(int n) { num = n; } //普通构造函数
private:
int num;
};
class Test2
{
public:
explicit Test2(int n) { num = n; } //explicit(显式)构造函数
private:
int num;
};
int main()
{
Test1 t1 = 12; //隐式调用其构造函数,
成功
Test2 t2 = 12; //编译错误,不能隐式调用其构造函数
Test2 t3(12); //显示调用成功
return 0;
}
Test1的构造函数带一个int型的参数,代码19行会隐式转换成调用Test1的这个构造函数。而Test2的构造函数被声明为explicit(显式),这表示不能通过隐式转换来调用这个构造函数,因此代码20行会出现编译错误。
普通构造函数能够被隐式调用。而explicit构造函数只能被显示调用。
http://blog.csdn.net/sprintfwater/article/details/8757223
相关文章推荐
- C++ 学习拾遗 —— 点滴记录C++学习过程中遇到的问题以及整理
- 学习C++零星记录
- C++ 学习记录 5 --
- C++标准模板库(STL) 学习记录 Part2
- 算法学习记录四(C++)--->通过前序和中序序列重建二叉树
- c++学习记录2
- C++学习记录19--运算符重载为什么要使用引用(=)
- C++学习记录3--VS 2010 sqrt()函数
- C#程序员的C++学习记录:一
- C++学习记录一
- C++学习、成长记录(2011-2012第一学期第18周)
- C++ 学习记录1
- 算法学习记录九(C++)--->二进制中1的个数
- Lua和C++交互 学习记录之五:全局数组交互
- C++ 学习记录 20180301
- 【记录】Accelerated C++:Practical Programming by Example第0章:开始学习C++
- C/C++语言学习记录
- C++ 学习记录4 -- 模板chongzai
- c++学习记录17--虚函数和纯虚函数
- 学习C++的心得记录