c++————学习记录(一)

来源:互联网 发布:aim聊天软件 编辑:程序博客网 时间:2024/06/01 07:13

学习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

原创粉丝点击