C++ Primer: 类与作用域详解及构造函数优化

0 下载量 166 浏览量 更新于2024-09-02 收藏 63KB PDF 举报
本文档主要围绕《C++ Primer》课程中关于类的概念进行深入解析,着重讨论了类的作用域和构造函数的使用。以下是详细的知识点总结: 1. 类的作用域(Class Scope): - `Window_mgr::clear(ScreenIndex i)` 函数示例展示了类作用域的规则。在这个例子中,`Window_mgr` 是函数的局部作用域,函数内部可以访问到 `Window_mgr` 类的成员,如 `screens` 数组。若需要在函数返回值中使用 `Window_mgr` 类的类型,必须显式指定作用域,如 `Window_mgr::ScreenIndex`。 - C++ 编译器在处理成员函数时,首先在类内部查找声明,接着在类的作用域外(enclosing scope)搜索,如果没有找到,就会报错。这意味着在类的内部和外部可以使用相同的名字,但typedef定义不能重名,否则会导致编译错误。 - 对于成员函数内部的名称查找规则,编译器会先在当前函数内查找,然后在类内查找,最后在类的外部作用域中查找。通过 `this` 或者类名前缀(如 `Screen::`)可以明确区分局部变量与类成员。 2. 构造函数的重新审视(Constructors Revisited): - 初始化变量时,如果先定义后赋值,可能会先赋予默认值,因此建议在声明时即进行初始化,如 `string foo = "HelloWorld!";`。对于构造函数,同样地,最好在参数列表中直接指定成员的初始值,避免在函数体内部进行不必要的赋值。 - 对于 `const` 类型的变量、引用或指针,以及没有默认构造函数的类,必须在构造函数参数列表中明确初始化。注意,成员的初始化顺序并不依赖于列表的顺序,而是根据它们在类中的存储顺序进行,因此推荐按存储顺序来设置初始化值。 本文重点介绍了类的作用域规则和构造函数的使用技巧,这对于理解和编写高效的C++代码至关重要。理解这些概念有助于开发者更好地组织代码结构,确保类的正确性和可读性。在实际编程中,合理利用这些规则能够提高代码质量和维护效率。