第十章 类

类作用域

在类中声明的变量和函数只在类中可见,所以在类外定义成员函数的时候需要类名的解析符。

在类外调用函数需要实例化变量的成员运算符,也是类作用域的体现。

另一方面,在类内声明常量并直接赋值的形式是行不通的:

class Bakery
{
  private:
    const int Months = 12; //Fails
    .....
}

因为类只是声明类内的形式,它还没有创建任何实例,内存中没有任何关于这个类的数据。对此,有两种解决办法。

  • 使用枚举:用枚举为整个类提供整型常量,不过真正的常量含义不同,编译器将Months解释为名称,并用12代替它。

    class Bakery
    {
      private:
        enum {Months = 12};
        ...
    }
    
  • static:使用静态字创建类内常量,Months不会存储在对象中,而是和其他静态数据一起存储在静态区,所以Months被所有对象共享。

    另外,模板类的静态对象不同,每一个特定实例化的类都有自己的静态成员。也就是说int和double的静态成员是不同的。

    private:
      static const int Months = 12;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 什么是泛型,泛型的作用? 泛型是Java语言中的一种参数化型机制,它允许在定义、接口和方法时使用型参数,从而实现代码的灵活性和重用性。泛型的作用有以下几个方面: - 提高代码的安全性和可读性:使用泛型能够在编译期间检查型,并避免在运行时出现型转换异常。 - 代码重用和灵活性:使用泛型能够实现代码的重用,减少代码冗余,同时也能够使代码更加灵活。 - 编写更加通用的算法和数据结构:使用泛型能够编写更加通用的算法和数据结构,使得它们能够处理不同型的数据。 2. 什么是有界泛型? 有界泛型是指限定泛型参数的型范围,通过指定泛型参数必须是某个或接口的子或实现来限定泛型参数的型范围。Java中的有界泛型有以下两种形式: - 上界限定:使用extends关键字指定泛型参数必须是某个的子或实现。 - 下界限定:使用super关键字指定泛型参数必须是某个的超或实现。 有界泛型可以提高代码的安全性和可读性,同时也能够减少型转换的问题。 3. 泛型和方法泛型有什么区别? 泛型和方法泛型是Java中两种不同的泛型形式。它们的区别如下: - 泛型:泛型是指在或接口中定义泛型型参数,可以在或接口的实例化过程中指定具体的型参数。 - 方法泛型:方法泛型是指在方法中定义泛型型参数,可以在方法调用时指定具体的型参数。 泛型和方法泛型在使用上有一些不同: - 对于泛型,型参数的作用域是整个或接口,可以在或接口中的任何地方使用。对于方法泛型,型参数的作用域是整个方法体,只能在方法体中使用。 - 泛型的型参数可以被内部的任何成员方法使用,而方法泛型的型参数只能被定义它的方法使用。 - 泛型的型参数可以被继承子所使用,而方法泛型的型参数只能被定义它的方法所使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值