21xrx.com
2024-11-22 08:16:14 Friday
登录
文章检索 我的文章 写文章
C++:类内初始化不允许使用()符号
2023-06-23 11:23:48 深夜i     --     --
C++ 类内初始化 ()符号

在C++的面向对象编程中,类内初始化是一种方便的初始化方法,可以让我们在定义类的同时就为成员变量赋初值。然而,有一个需要注意的地方就是,在类内初始化时不允许使用()符号。

首先,我们来看一下C++中类内初始化的基本语法。在类内声明成员变量时,可以在其后面加上等号和初值,就像这样:


class MyClass {

public:

  int a = 0;  // a 的初值为 0

  int b{ 1 }; // b 的初值为 1

  int c;    // c 未被初始化

};

从上面的代码中可以看出,类内初始化可以使用等号或花括号的形式,它们的效果是相同的。但需要注意的是,在等号或花括号外面加上括号是不被允许的,会导致编译器报错。

例如,下面这段代码就是错误的:


class MyClass {

public:

  int a(0); // 错误:不允许使用()符号

};

这是因为C++中括号()有“函数调用”的含义,而在类内初始化时我们要的是一个基础类型的初值,所以不能使用括号。

需要注意的是,在有些情况下可以使用花括号来代替括号。比如,在定义数组或结构体时,花括号是一种常见的初始化方式,也可以在类成员中使用。例如:


class MyClass {

public:

  int d[3] = 3 ;  // 定义数组并初始化

  struct Point int x;

  Point p 0;     // 定义结构体并初始化

};

在这个例子中,我们可以使用花括号来初始化数组和结构体,但也不能使用括号。

综上,C++中类内初始化是一种非常方便的初值设定方法,但是需要注意不能使用括号(),只能使用等号或花括号。如果使用括号而不是等号或花括号,会导致编译器报错。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复