C语言初始化列表有哪些常见长尾词用法?

2026-04-16 23:531阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计670个文字,预计阅读时间需要3分钟。

C语言初始化列表有哪些常见长尾词用法?

C++中提供了初始化列表对成员变量进行初始化。语法规则如下:

class_name::class_name(v1) :m1(v1), m2(v2, v3), m3(v3){ // ...}

注意事项:- 成员的初始化顺序与成员声明的顺序相同。- 初始化顺序与声明顺序一致。

C++中提供了初始化列表对成员变量进行初始化。

  语法规则:class_name::class_name()

          m1(v1),m2(v2,v3),m3(v3)

        {

          .......

        }

注意:

  成员的初始化顺序,与成员的声明顺序相同。

  成员的初始化顺序与初始化列表的位置无关。

  初始化列表比构造函数先执行。

测试代码:  

#include <stdio.h> class val { private: int i; public: val(int val) { i = val; printf("i = %d\n",i); } }; class Test { private: const int Ci=10; val m1; val m2; public: Test():m2(2),m1(1) { //Ci = 1; printf("Test::Test()\n"); } int get_Ci() { return Ci; } }; int main(int argc, char *argv[]) { Test Ci; printf("Ci = %d\n",Ci.get_Ci()); return 0; }

  运行结果:  

i = 1 i = 2 Test::Test() Ci = 10

类中的const成员

  类中个const成员变量会被分配空间,(所分配空间的位置取决于对象在哪个位置被声明。)

C语言初始化列表有哪些常见长尾词用法?

  类中的const 成员的实质是一个只读变量,可以通过指针修改其值。

  类中个const 可以使用初始化列表指定初始值,也可以在定义的时候进行初始化。、

  注意:编译器无法得到const成员的初始值,因此在类中声明的const 只读变量无法进入符号表成为一个真正意义上的常量。

测试代码:

  

#include <stdio.h> class val { private: int i; public: val(int val) { i = val; printf("i = %d\n",i); } }; class Test { private: const int Ci; val m1; val m2; public: Test():m2(2),m1(1),Ci(100) { //Ci = 1; printf("Test::Test()\n"); } int get_Ci() { return Ci; } void change_Ci(int CI) { int *p = const_cast<int *>(&Ci);//delete only read *p = CI; } }; int main(int argc, char *argv[]) { Test Ci; printf("Ci = %d\n",Ci.get_Ci()); Ci.change_Ci(1000); printf("Ci = %d\n",Ci.get_Ci()); return 0; }

  上面代码通过const_cast<Type *>(&val);关键字去掉了Ci的只读属性。

  然后通过*p = CI; 修改Ci的值

运行结果:

  

i = 1 i = 2 Test::Test() Ci = 100 Ci = 1000

本文共计670个文字,预计阅读时间需要3分钟。

C语言初始化列表有哪些常见长尾词用法?

C++中提供了初始化列表对成员变量进行初始化。语法规则如下:

class_name::class_name(v1) :m1(v1), m2(v2, v3), m3(v3){ // ...}

注意事项:- 成员的初始化顺序与成员声明的顺序相同。- 初始化顺序与声明顺序一致。

C++中提供了初始化列表对成员变量进行初始化。

  语法规则:class_name::class_name()

          m1(v1),m2(v2,v3),m3(v3)

        {

          .......

        }

注意:

  成员的初始化顺序,与成员的声明顺序相同。

  成员的初始化顺序与初始化列表的位置无关。

  初始化列表比构造函数先执行。

测试代码:  

#include <stdio.h> class val { private: int i; public: val(int val) { i = val; printf("i = %d\n",i); } }; class Test { private: const int Ci=10; val m1; val m2; public: Test():m2(2),m1(1) { //Ci = 1; printf("Test::Test()\n"); } int get_Ci() { return Ci; } }; int main(int argc, char *argv[]) { Test Ci; printf("Ci = %d\n",Ci.get_Ci()); return 0; }

  运行结果:  

i = 1 i = 2 Test::Test() Ci = 10

类中的const成员

  类中个const成员变量会被分配空间,(所分配空间的位置取决于对象在哪个位置被声明。)

C语言初始化列表有哪些常见长尾词用法?

  类中的const 成员的实质是一个只读变量,可以通过指针修改其值。

  类中个const 可以使用初始化列表指定初始值,也可以在定义的时候进行初始化。、

  注意:编译器无法得到const成员的初始值,因此在类中声明的const 只读变量无法进入符号表成为一个真正意义上的常量。

测试代码:

  

#include <stdio.h> class val { private: int i; public: val(int val) { i = val; printf("i = %d\n",i); } }; class Test { private: const int Ci; val m1; val m2; public: Test():m2(2),m1(1),Ci(100) { //Ci = 1; printf("Test::Test()\n"); } int get_Ci() { return Ci; } void change_Ci(int CI) { int *p = const_cast<int *>(&Ci);//delete only read *p = CI; } }; int main(int argc, char *argv[]) { Test Ci; printf("Ci = %d\n",Ci.get_Ci()); Ci.change_Ci(1000); printf("Ci = %d\n",Ci.get_Ci()); return 0; }

  上面代码通过const_cast<Type *>(&val);关键字去掉了Ci的只读属性。

  然后通过*p = CI; 修改Ci的值

运行结果:

  

i = 1 i = 2 Test::Test() Ci = 100 Ci = 1000