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

C#和C++语法区别

2012-08-23 15:06 204 查看
C#中引用类型的变量,如果两个引用类型变量指向同一内存,那么对一个引用类型变量的修改也会引起和它指向同一内存的引用类型变量的修改。

这意味着方法参数的类型取决于它是值类型还是引用类型。如果参数是引用类型,那么无需 ref 和 out ,就可以在方法中修改对象的值。

堆,又称为自由存储器

C++中没有引用类型和值类型的区别,虽然C++中有引用。也因此C++中,只有在参数中使用引用关键字 &,才能在方法中修改对象的值。

而且对于类的复制,不会同步的改变原对象和复制对象。

接受数量不定的实参

C++例子

int sum(int count, ...)
{
if(count < = 0)
return 0;
va_list arg_ptr; // Declare argument list pointer
va_start(arg_ptr, count); // Set arg_ptr to 1st optional                                                          argument
int sum(0);
for(int i = 0 ; i < count ; i++)
sum += va_arg(arg_ptr, int); // Add int value from arg_ptr               and increment
va_end(arg_ptr); // Reset the pointer to null
return sum;
}


int main(int argc, char* argv[])
{
cout < < sum(6, 2, 4, 6, 8, 10, 12) < < endl;
cout < < sum(9, 11, 22, 33, 44, 55, 66, 77, 66, 99) < < endl;
return 0;
}


C#使用 params 数组

public static int Sum(params int[] paramList)
{
Console.WriteLine("Using parameter list");

if (paramList == null)
{
throw new ArgumentException("Util.Sum: null parameter list");
}

if (paramList.Length == 0)
{
throw new ArgumentException("Util.Sum: empty parameter list");
}

int sumTotal = 0;
foreach (int i in paramList)
{
sumTotal += i;
}
return sumTotal;
}


static void DoWork()
{
//Console.WriteLine(Util.Sum(10, 9, 8, 7, 6, 5, 4, 3, 2, 1));
Console.WriteLine(Util.Sum(2, 4, 6, 8, 10));
}

C#中假如一个基类和派生类声明了两个具有相同签名的方法,那么在编译应用程序时会显示一条警告消息。派生类中的方法会屏蔽基类中具有相同签名的方法。

C++中只有使用 virtual 关键字才会屏蔽基类相同签名的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: