C++使用类的一些注意事项

04-27 1276阅读 0评论

C++使用类的一些注意事项

前言:

本篇内容为前面的补充,介绍了我们使用类时需要注意些什么以及一些编译器的优化,可能有些理解不到位或者错误,请斧正。

目录

前言:

1.再谈构造函数

2.(c++98)隐式类型转换中的编译器的优化

3.explicit关键字

4.static成员

5.匿名对象

6.友元函数

7.内部类

8.编译器的一些场上的优化

总结:

若有歧义,请指出,感谢阅读!


1.再谈构造函数

我们在构造函数体中,给成员变量赋值能叫做成员变量的初始化吗?并不可以,这种行为只是给成员变量赋初值,在函数体中,我们可以多次赋值,而初始化只能初始化一次。

那该如何初始化呢?

使用初始化列表。以一个冒号开始,接着是一个以逗号分割的数据成员列表,每个成员变量的后面跟一个放在括号中的初始值表达式。

class Date
{
public:
	Date(int year, int month, int day)
		:_year(year)
		,_month(month)
		,_day(day)
	{}
private:
	int _year;
	int _month;
	int _day;
};

 那像const这样的必须在定义位置的初始化的,放在成员变量里面该怎么初始化呢?

可以给缺省值,但不是初始化:

class A
{
public:
	A()
		:_x(1)
	{
		_a1++;
	}
private:
	int _a1 = 1;
	int _a2 = 2;
	const int _x;//可以给缺省值,但不是初始化
};

另外,缺省值也会在初始化列表进行初始化:

C++使用类的一些注意事项

如上图我们可以看到, _a1的结果是2,虽然没有在初始化列表中显示的初始化,但是还是会走初始化列表初始化;其次_a2的结果是0,虽然_a2的缺省值是2,但是在初始化列表中显示的初始化为了1,所以再--就是0。而对于即不给缺省值也不给初始化的普通成员变量,经过测试,那就是随机值。

对于成员变量是引用的与成员变量是自定义类型的:

class B
{
public:
	B(int b)
		:_b(0)
	{
		cout 

免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,1276人围观)

还没有评论,来说两句吧...

目录[+]