本文以实例形式分析私有构造函数的特点,以及在何种情况下使用私有构造函数。相信对于大家更好的理解C#中的私有构造函数有一定的促进作用。具体如下:
一、带私有构造函数的类不能被继承
在Animal类中声明一个私有构造函数,让Dog类来继承Animal类。
public class Animal
{
private Animal()
{
Console.WriteLine("i am animal");
}
}
public class Dog :
复制构造函数是一种特殊的构造函数,有一般构造函数的特性。它的功能是用一个已知的对象来初始化一个被创建的同类对象。复制构造函数的参数传递方式必须按引用来进行传递,请看实例:
#include
#include
using namespace std ;
class Student
{
private :
char name[8];
int age ;
char sex ;
int score ;
public :
void disp(); //打印信息的函数声明
Studen
前言
我们知道,在调用构造函数时,C#会先对类中的字段、属性进行初始化操作。那么,问题来了,为什么在调用构造函数前会初始化类中的字段和属性呢?让我们一起通过ildasm来揭开构造函数的面纱吧。
需要反编译的C#代码如下:
class CtorTester
{
private string _name;
private int _age = 10;
public int Age { get; set; } = 20;
public CtorTester()
{
_name = Na
c++中的源程序: 代码如下:class X {private: int i;};
int main() { X x;}上面的类X没有定义构造函数,仅仅有一个int i。
下面为其汇编程序: 代码如下:; 7 : int main() {
push ebp;ebp为一个寄存器,总是指向一个函数调用堆栈的栈底,作为基址,用偏移量来访问该调用栈上的变量,但这里没有任何变量要访问,因此不起作用 mov ebp, esp;这两句的作用是为了保存调用main之
#include
class Test
{
private:
int i;
int j;
int k;
public :
void initialize()
{
i=0;
j=1;
k=2;
}
void print()
{
printf("i=%d,j=%d,k=%d",i,j,k);
}
}; ///分号至关重要
int main()
{
Test t1;
t1.initialize(); ///构造函数
t1.print();
return 0;
}
使用构造函数
#include
C++构造函数的默认参数
和普通函数一样,构造函数中参数的值既可以通过实参传递,也可以指定为某些默认值,即如果用户不指定实参值,编译系统就使形参取默认值。
【例】
#include
using namespace std;
class Box
{
public :
Box(int h=10,int w=10,int len=10); //在声明构造函数时指定默认参数
int volume( );
private :
int height;
int width;