网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > C++ >

类成员变量的初始化

时间:2025-12-12 16:55

人气:

作者:admin

标签:

导读:C11中在初始化时可以使用 = ,也可以使用 {} ,也可以使用 ={} ; 需要注意的是:类中的静态成员变量只有静态常量,并且类型是整型或者枚举类型,才能在类内初始化,其他都得在类外...

C++11中在初始化时可以使用 = ,也可以使用 {} ,也可以使用 ={} ;

需要注意的是:类中的静态成员变量只有静态常量,并且类型是整型或者枚举类型,才能在类内初始化,其他都得在类外初始化。

#include <iostream>
using namespace std;

class Base {
public:
	Base(){
	}
	Base(int num){
	}
	int a = { 4 };
	int b{ 1 };
	double cc = 1.23;
	char aa = 'a';
	string str = "hello";
	string str1{ "world" };
	//string str2("hello,world"); //用()则会报错,类内不能用()初始化,在类外这个是有参构造,可以使用。
	string str3 = { "hello" };
	static int c;
	static const double d;
	static const char* const e;  //静态常量字符数组指向静态字符数组
	// 变量是静态常量,并且类型是整型或者枚举类型,才能在类内初始化,其他都得在类外初始化。
	const static int f = 0;  //const static 和 static const 意义相同,没有区别
};
int Base::c = 8;
const double Base::d = 3.14;
const char* const Base::e = "i am luffy";

int main() {
    int ab { 4 };
    string str7 = { "hello" }; 
    string str8("888");
    string str9 { "888888" }; 
	return 0;
}

另外还提供了初始化列表:

#include <iostream>
using namespace std;

class c {
public:
	c() :m_num(66), a(3), b(3) {

	}
	c(int n1, int n2, int n3) : m_num(n1),a(n2), b(n3){

	}
	int m_num = 8;
	int a;
	int b;
};

int main() {
	c c1;
	c c2(11,22,33);
	cout << "c1.m_num = " << c1.m_num << "  c1.a = " << c1.a << "  c1.b = " << c1.b << endl;
	cout << "c2.m_num = " << c2.m_num << "  c2.a = " << c2.a << "  c2.b = " << c2.b << endl;

	system("pause");
	return 0;
}

输出结果:

c1.m_num = 66  c1.a = 3  c1.b = 3
c2.m_num = 11  c2.a = 22  c2.b = 33

使用初始化列表初始化成员变量

且从上面的程序中说明先运行了int m_num = 8; 之后才进行初始化的m_num{66};

那么和之前的this->m_num = a;初始化方式比较谁先运行呢?

class c {
public:
	c(int n1, int n2, int n3) : m_num(n1),a(n2), b(n3){
		this->m_num = 99999;
	}
	int m_num = 8;
	int a;
	int b;
};

int main() {
	c c2(11,22,33);
	cout << "c2.m_num = " << c2.m_num << "  c2.a = " << c2.a << "  c2.b = " << c2.b << endl;

	system("pause");
	return 0;
}

输出结果:

c2.m_num = 99999  c2.a = 22  c2.b = 33

说明this->m_num = 99999;这种初始化方式是最后执行的。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信