特别的构造函数:构造函数的修饰

简介:
构造函数并不一定都是public的,以下的代码是不是另拟感到构造函数的奇特阿?

1   public   class  Class1 // 永远无法被实例化的类
2   {
3 //这个类没有可以被外部访问的构造函数
4 private Class1()
5 {
6 }

7 }

8
9   public   class  Class2 // 只可以在本程序内实例化的类
10   {
11 internal Class2()
12 {
13 }

14 }

15
16   public   class  Class3 // 只可以通过自身实例化的类
17   {
18 private Class3()
19 {
20 }

21 //private的构造函数可以被自身的方法调用,所以可以用Class3.CreateClass3()来创建实例
22 public static Class3 CreateClass3()
23 {
24 return new Class3();
25 }

26 }

27
28   public   class  Class4
29   {
30 //Class4不能被实例化,但又要求子类在继承时构造有参
31 protected Class4(int i)
32 { }
33
34 }

35
36   public   class  Class4Sub : Class4
37   {
38
39 public Class4Sub(int i)
40 : base(i)
41 {
42
43 }

44 }

45  
46   public   class  Class5 // 要求子类必须显示调用父类构造函数的
47   {
48 public Class5(int i)
49 { }
50 }

51
52   public   class  Class5Sub : Class5
53   {
54 public Class5Sub()
55 : base(0)
56 { }
57 public Class5Sub(int i)
58 : base(i)
59 { }
60 }

 



本文转自shyleoking 51CTO博客,原文链接:http://blog.51cto.com/shyleoking/806285

相关文章
|
3月前
|
编译器 C++
C++类与对象(四):再谈构造函数(详解初始化列表)、Static成员
C++类与对象(四):再谈构造函数(详解初始化列表)、Static成员
51 0
|
4月前
|
编译器 C++
C++ | 谈谈构造函数的初始化列表
C++ | 谈谈构造函数的初始化列表
33 0
|
28天前
|
设计模式 算法 安全
【C/C++ 关键字 函数说明符 】C++ final关键字(修饰成员函数无法被子类重写覆盖)
【C/C++ 关键字 函数说明符 】C++ final关键字(修饰成员函数无法被子类重写覆盖)
37 1
|
3天前
|
存储 编译器 C++
【C++成长记】C++入门 | 类和对象(上) |类的作用域、类的实例化、类的对象大小的计算、类成员函数的this指针
【C++成长记】C++入门 | 类和对象(上) |类的作用域、类的实例化、类的对象大小的计算、类成员函数的this指针
|
3天前
|
编译器 C++
【C++成长记】C++入门 | 类和对象(中) |类的6个默认成员函数、构造函数、析构函数
【C++成长记】C++入门 | 类和对象(中) |类的6个默认成员函数、构造函数、析构函数
|
1月前
|
编译器 C#
c#学习相关系列之构造函数
c#学习相关系列之构造函数
|
1月前
|
安全 C++
c++类和对象一对象特性一构造函数和析构函数
c++类和对象一对象特性一构造函数和析构函数
8 0
|
2月前
|
编译器 C语言 C++
C++类和对象的细节原理:this指针、构造函数和析构函数、深浅拷贝、运算符重载、初始化列表、类的各种成员和方法
C++类和对象的细节原理:this指针、构造函数和析构函数、深浅拷贝、运算符重载、初始化列表、类的各种成员和方法
36 0
|
8月前
|
安全 编译器 C++
[C++] 类与对象(中)类中六个默认成员函数(1)上
[C++] 类与对象(中)类中六个默认成员函数(1)上
|
8月前
|
存储 C++
C++基础语言之(一)static关键字的作用
C++基础语言之(一)static关键字的作用
110 0