您的位置:首页 > 编程语言 > C语言/C++

C++中可以用struct和class来定义类型,这两种类型有什么区别

2017-03-23 15:51 423 查看
如果没有标明成员函数或者成员变量的的访问权限级别,在struct中默认的是public,而在class中默认的是private。

在C#中。struct和class有什么区别?

C#和C++不一样,在C#中如果没有标明成员函数或者成员变量的访问权限级别,struct和class 都是private的。struct和class的区别是struct定义的是值类型,值类型的实例在栈上分配内存;而class定义的是引用类型,引用类型的实例实在堆上分配内存。

在C#中可以为类型定义一个特殊的构造函数:静态构造函数。

这个函数的特点是第一次被使用之前由运行时自动调用,而且保证只调用一次。下面看一个面试题:

class A
{
public A(string text)
{
Console.WriteLine(text);
}
}
class B
{
static A a1=new A("a1");
A a2=new A("a2");
static B()
{
a1=new A("a3");
}
publicB()
{
a2=new A("a4");
}
}
class Program
{
static void Main(string[] args)
{
B b=new B();
}
}


得到的打印结果:a1、a2、a3、a4

在调用类型B的代码之前线执行B的静态构造函数,在初始化的时候先对静态的成员函数进行初始化,即先执行
static A a1=new A("a1");


再执行静态构造函数static B();

因此先打印a1,再打印a3,接下来再执行非静态的

静态成员最主要的一个应用就是实现Singleton模式。就是保证此类型的对象唯一性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言