C++从入门到精通——类的作用域及类的实例化

04-08 1088阅读

类的作用域及类的实例化

  • 前言
  • 一、类的作用域
  • 二、类的实例化
    • 引例
    • 类是对对象进行描述的
      • 示例
      • 一个类可以实例化出多个对象
        • 示例
        • 示例

          前言

          类的作用域是指类中定义的变量和方法的可见性和可访问性范围。在类的内部,所有成员(包括属性和方法)都具有类作用域,意味着它们可以在类的任何方法中被访问。然而,类的外部无法直接访问这些成员,除非通过类的实例或类本身(对于静态成员)。类的成员可以被设置为公有(public)、私有(private)或受保护的(protected),以控制其在不同上下文中的可见性和可访问性。这种作用域的控制有助于封装和隐藏类的实现细节,同时提供清晰的接口供外部使用。

          类的实例化是指创建一个类的具体对象的过程。这通常涉及分配内存空间给新创建的对象,并设置其初始属性值。在实例化过程中,会调用类的构造函数来初始化对象的状态。一旦对象被实例化,就可以通过该对象来访问类的属性和方法,从而实现对对象的操作。类的实例化是面向对象编程中非常重要的概念,它使得程序员能够创建多个具有相同属性和方法的对象,并通过这些对象来模拟现实世界中的实体和它们之间的关系。

          C++从入门到精通——类的作用域及类的实例化


          一、类的作用域

          类的作用域是指类中定义的成员变量(属性)和方法可被访问的范围。

          • 类的作用域可以分为三个级别,分别为:

            • 公有作用域(public):公有作用域的成员变量和方法可以在类的外部被访问和调用。公有作用域的成员可以被其他类继承和重写。
            • 私有作用域(private):私有作用域的成员变量和方法只能在类的内部被访问和调用,无法被外部类或子类直接访问。私有作用域的成员只能被本类中的其他方法使用。
            • 受保护作用域(protected):受保护作用域的成员变量和方法可以在类的内部和子类中被访问和调用。受保护作用域的成员不能被外部类直接访问。
            • 类定义了一个新的作用域(即上述提到的三个作用域)

              类的所有成员都在类的作用域中。在类体外定义成员时,需要使用 :: 作用域操作符指明成员属于哪个类域。

              using namespace std;
              class Person
              {
              public:
              	void PrintPersonInfo();
              private:
              	char _name[20];
              	char _gender[3];
              	int  _age;
              };
              // 这里需要指定PrintPersonInfo是属于Person这个类域
              void Person::PrintPersonInfo()
              {
              	cout 
              public:
              	void PrintPersonInfo();
              private:
              	char _name[20];
              	char _gender[3];
              	int  _age;
              };
              // 这里需要指定PrintPersonInfo是属于Person这个类域
              void Person::PrintPersonInfo()
              {
              	cout 
              	Person man;
              	cout 
              public:
              	void PrintPersonInfo();
              private:
              	char _name[20];
              	char _gender[3];
              	int  _age;
              };
              // 这里需要指定PrintPersonInfo是属于Person这个类域
              void Person::PrintPersonInfo()
              {
              	cout 
              	Person man;
              	cout 
              public:
              	void PrintPersonInfo();
              private:
              	char _name[20];
              	char _gender[3];
              	int  _age;
              };
              // 这里需要指定PrintPersonInfo是属于Person这个类域
              void Person::PrintPersonInfo()
              {
              	cout 
              	cout 
              	Person._age = 100;   // 编译失败:error C2059: 语法错误:“.”
              	return 0;
              }
              
              public:
                  std::string brand;
                  std::string model;
                  std::string color;
              };
              int main() {
                  Car car1;
                  car1.brand = "Toyota";
                  car1.model = "Camry";
                  car1.color = "Blue";
                  Car car2;
                  car2.brand = "Honda";
                  car2.model = "Civic";
                  car2.color = "Red";
                  // 输出 car1 的属性
                  std::cout 

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]