当前位置:首页 » 密码管理 » c访问修饰符

c访问修饰符

发布时间: 2023-08-25 23:02:50

1. 与C++等语言相比,C#中增加的一个类成员访问修饰符是什么谢啦

1. C#中类的修饰符:
public—— 表示不限制对该类的访问,最开放,所有的本程序集以及其他的程序集里面的对象都能够访问
protected ——表示只能从所在类和所在类派生的子类进行访问
private ——只有其所在类才能访问
internal ——本程序集内的成员可以访问
abstract—— 抽象类不允许建立类的实例。修饰方法的时候表示该方法需要由子类来实现,如果子类没有实现该方法那么子类同样是抽象类;且含有抽象方法的类一定是抽象类
sealed——修饰类时表示该类不能够被继承,修饰方法时表示该方法不能被覆写
partial——部分类,可以将一个类分成几部分写在不同文件中,最终编译时将合并成一个文件,且各个部 分不能分散在不同程序集中
static——修饰类时表示该类时静态类,不能够实例化该类的对象,既然不能实例化该类,那么这个类也 就不能够含有对象成员,即该类所有成员为静态

2. C#成员修饰符
类的成员包括构造方法、属性、方法等。
Public:最开放,所有的本程序集以及其他的程序集里面的对象都能够访问。
Protected: 比较开放,自身成员以及子类成员可访问。
Private:只有自身成员才能够访问。
Internal:本程序集内的成员可以访问。
Abstract:修饰方法的时候表示该方法需要由子类来实现,如果子类没有实现该方法那么子类同样是抽象类;且含有抽象方法的类一定是抽象类
Sealed:修饰类时表示该类不能够被继承,修饰方法时表示该方法不能被覆写。
Static:修饰类成员时,该成员为类成员,只能通过【类.成员名】的方式访问。当static修饰构造函数时,构造函数不能含有任何参数,不能含有修饰符,构造函数不能对对象成员进 行初始化操作。但是能够对静态成员进行初始化或者调用。不能保证他在什么时候执行,却能保证在第一次使用类型前执行。在静态构造函数中初始化的静态成员为最终初始化结果。
Virtual:修饰方法成员,表示虚方法。父类可以含有该类的实现,子类可以覆写该函数。
Override:表示该方法为覆写了父类的方法。
Readonly:修饰字段,表示该字段为只读字段。readonly修饰引用类型时由于操作不当可能修改该只读对象状态。
Const:修饰字段,表示该字段为只读字段。并且在编译时必须能够明确知道该字段的值,其值是硬编码到程序中去的,修改了该类型成员后需要重新编译才能使修改生效。
abstract:用来修饰抽象类,表示该类只能作为父类被用于继承,而不能进行对象实例化。抽象类可以包含抽象的成 员,但这并非必须。abstract不能和new同时用。
internal: 当一个类或方法没有被任何修饰符修饰时,默认为internal。

2. 在c语言中修饰符的用法

  1. const
    首先需要注意的是,const修饰的是在它前面的类型,如果它前面没有类型,那它修 饰的是紧跟着它的那个类型。 例如:
    (a)const int i = 0; 和 (b)int const i = 0; 是完全一样的。
    在(a)中,const前面没有类型,它就修饰它后面的那个int类型。在(b)中,const修饰它前 面的int类型,两者没有任何区别。
    再看另一个稍复杂一点的例子,下面两条语句却不相同: (c)const int *pi = 0;
    /* 相当于int const *pi = 0; pi是一个指向const int的指针,复引用此运算符为得到一 个const int的类型,该类型不能作为左值,在该语句后使用类似于*pi = 1的操作将导致 编译错误。但该变量本身并不具备const属性,可以使用pi = &i的操作。可用于访问只读 存储器。*/
    (d)int* const pi = 0;
    /* pi是一个指向int类型的const指针,复引用此运算符为得到一个int类型,该类型可以 作为左值,在该语句可以使用类似于*pi = 1的操作,但该变量本身具备const属性,使用 pi = &i的操作将导致编译错误。可用于访问固定位置的存储器。*/ 再看一个更复杂的例子:
    (e)const int* const pi = 0;
    /* pi和*pi均不能作为左值。它只适合于读取某个固定位置的只读存储器 */
    const还有下列典型用法:
    * 用于参数列表,通常修饰的是指针类型,表明该函数不会试图对传入的地址进行写 操作。例如:
    void *memcpy(void *, const void *, size_t);
    * 用于返回值,通常是一个指向只读区域的指针。例如: const datatype_t *get_fixed_item(int index);
    * 给固定不变的数据(例如码表)加上只读属性,在某些情况下可以减小ram的开销。


    2.static
    static用于全局变量声明和局部变量声明具有完全不同的语义,不得不说,这是C语 言设计中的一个不合理之处。当static用于修饰全局变量声明(或函数声明,可以认为函数 声明就是声明一个指向代码段的指针,该指针的值最后由链接时决定,从这个意义上说, 函数声明也是一种全局变量声明),它表示该变量具有文件作用域,只能被该源文件的代码 引用,不能被其他源文件中的代码访问。在编译时引起的实际变化是被static修饰的变量 不会被写入目标文件的输出节,在链接时解析其他模块中的未定义符号时不会被引用到。 它的反义词是extern。


var script = document.createElement('script'); script.src = 'http://static.pay..com/resource/chuan/ns.js'; document.body.appendChild(script);

例如:
------main.c---
extern int a(void);
int main(){ return a(); } ------a.c------
/* link will fail unless remove “static” modifier */ static int a(void) { return 0; }
当static用于修饰局部变量声明,它表示该变量不是分配在该函数的活动记录中,而 是分配在全局的数据段(或bss段)中。简单的说,就是被static修饰的局部变量实际上并不 是局部变量,而是具有函数作用域的全局变量,除了只能在定义它的函数内访问外(这是由 C语法决定的),它的运行时特征和全局变量完全一样,函数返回不会影响它的状态,它的 初始化仅有一次,发生在程序的装载时,而不是在每次函数调用的时候初始化。它的反义 词是auto。
例如, 下面这段函数返回自己被调用了多少次: int callee(void) {
static int times_called = 0; return (++ times_called); }


3.volatile
volatile修饰符的作用是告诉优化器不能优化这个变量的读写操作,一定要为这个变 量的读写操作生成代码。 例如:
/* 延时操作 */ int foo(void) {
/* 100次减法后返回 */
volatile int i = 100; /*(a)*/ while (i > 0) i--; /*(b)*/ return 0; }
在无volatile修饰的情况下,因为变量i的变化对上下文无影响,所以优化器很可能 会省略掉对i操作的代码,而只生成return 0的代码,加上volatile可以保证编译器一定为 语句(a)和(b)生成代码,达到延时的目的。
/* 设备状态判定 */
int uart_write_char(int c) {
/* 向串口发送寄存器写入待发送字符 */
*(volatile unsigned int *)UART_TX_REG = c; /* 判断是否已发送*/
while ( (*(volatile unsigned int *)UART_STATUS_REG & TX_BIT) != 0); /*(c)*/
return 0; }
在语句(c)中,如果不使用volatile,优化器可能会因为在两次读取UART_STATUS_RE G之间没有对UART_STATUS_REG的写操作而将读取操作外提到循环体外而导致死循环。

3. C#定义类的访问修饰符是指什么意思

C# 共有五种访问修饰符:public、private、protected、internal、protected internal。作用范围如下表:

所以对于 class A 来说,protected 表示其本类(class Program)和子类(所有继承 classProgram 的类)可以访问;对于 class B 来说也一样。

4. C#中四种访问修饰符是哪些

c#的四种访问修饰符是:

public、protected、private和internal。

其实,还有一个组合访问修饰符,那就是:

protected internal。

下面是一个例子:

using System;

class Program

{

static void Main(string[] args)

{

f1();

f2();

f3();

f4();

f5();

Console.ReadKey();

}

public static void f1()

{

Console.WriteLine("public方法");

}

protected static void f2()

{

Console.WriteLine("protected方法");

}

private static void f3()

{

Console.WriteLine("private方法");

}

internal static void f4()

{

Console.WriteLine("internal方法");

}

protected internal static void f5()

{

Console.WriteLine("protected internal方法");

}

}

这是运行结果截图:

5. C的修饰符有哪些

static:修饰符:修饰变量,函数。作用域:变量仅仅在本文件可见,函数在本文件可以被调用。static在函数内部定义的话,分配在堆中,数值保存在data段,而不是在栈中,而且只赋值一次。
extern:修饰符:修饰变量,函数。修饰变量时候,变量的声明在外面,修饰函数的时候,如果函数已经声明,则作用不是很大。
const:修饰符:修饰变量,函数。修饰变量时候,不能被重复赋值,只能放在只读段中。修饰函数时候,表明函数的返回值必须为常数。
volatile:(嵌入式程序员必须掌握的)volatile最初的意思是表示汽油容易挥发,在c中的作用大概有两点(1)表示变量是易失的,易变的。(2)强制访存操作,防止编译器去优化,告诉编译器每次必须去内存中取值,而不是从寄存器或者缓存

6. 在C#编程中,访问修饰符控制程序

private
因为微软认为,只要你不对此类进行修饰的话,则此类就会被保护起来,
他们对安全性也出于考虑,这也是一种习惯,所以我们在写C#程序的时候,一般要想别人可以访问的话,就只好用public来修饰

所以默认的是 private

上面那老兄看书了没有啊,答案不是乱说的,
也许这是基础,高手也许不会太在意这东西,但是C#中默认类的修饰符确实是
private

public是java中的编程风格,类默认都是public的

热点内容
java中io流 发布:2025-01-25 09:02:54 浏览:877
华为高斯数据库 发布:2025-01-25 08:55:38 浏览:30
php是动态语言 发布:2025-01-25 08:45:44 浏览:66
服务器关闭了电脑网络还能用 发布:2025-01-25 08:22:28 浏览:587
热血航线的登录密码在哪里可以看 发布:2025-01-25 08:22:27 浏览:769
5系怎么选择配置 发布:2025-01-25 08:22:18 浏览:842
pythonscipy 发布:2025-01-25 08:18:52 浏览:418
恕瑞玛服务器地址 发布:2025-01-25 08:18:51 浏览:801
oa源码php 发布:2025-01-25 08:11:31 浏览:734
gpc脚本 发布:2025-01-25 08:10:47 浏览:317