C++中类声明的数据成员初始化限制

需积分: 43 2 下载量 81 浏览量 更新于2024-07-14 收藏 1.37MB PPT 举报
在C++教程中,关于类声明中数据成员赋初值的规则是明确的。通常,类的声明部分不应包含数据成员的初始化,因为C++规定这些初始值应在对象定义时提供。这意味着在以下示例中: ```cpp class abc { private: char a = 'q'; // 错误,不能在类声明中初始化 int b = 33; // 错误,同上 public: ... // 其他成员声明 }; ``` 数据成员`a`和`b`的初始化应在创建abc类的对象时完成,如: ```cpp abc obj; // 对象定义 obj.a = 'q'; // 正确,此时可以给数据成员赋值 obj.b = 33; // 正确,同理 ``` C++的类是一种用户自定义的数据类型,它封装了数据和与之相关的操作(即成员函数)。类的定义包括数据成员(如结构体中的变量)和成员函数(方法),如结构体`complex`所示: ```cpp struct complex { double real; // 数据成员,复数的实部 double imag; // 数据成员,复数的虚部 // 成员函数 void init(double r, double i) { real = r; imag = i; } double absComplex() { double t; ... } // 计算复数绝对值 }; // 示例使用 struct complex A; A.init(3.0, 4.5); // 在对象初始化时给成员赋值 double abs = A.absComplex(); // 调用成员函数 ``` 类的设计允许我们创建具有特定行为的对象,通过构造函数(3.2构造函数与析构函数)在对象创建时初始化它们,并在需要时通过成员函数执行特定任务。此外,还介绍了其他概念,如对象数组与对象指针(3.3)、向函数传递对象(3.4)、静态成员(3.5)、友元(3.6)、类对象作为成员(3.7)以及常量类型(3.8)。 在C++中,结构体(C++扩充了C语言的结构)不仅是数据容器,还能包含函数,这使得程序设计更加灵活和功能强大。理解并遵循类和数据成员初始化的规则对于编写高效且符合规范的C++代码至关重要。