很早就有学习C++的冲动,但是由于一直以来坚持C#而没有真正进入过C++世界很多的文章包括微软的也只有C++转向C#的文章,而很少有人写过由C#进入C++的文章。由于我对游戏开发很有兴趣,在我看到的现状来看C++是游戏界的首选,我是说大型游戏而不是手机之类的。同时朋友会叫你写一个小程序,比如一个计算器,你总不能叫他装一下.NET框架再运行吧,所以多我来说学习C++还是很有必要的,不知道大哥大姐们是怎么个想法。在此我想记录一下C#中和C++的区别和联系等等,OK今天首先看看C#中和C++中的类及其继承等等。
【C++】在这里我们主要讲讲C++,而且会偏重VC++。首先让我们看看C++的文件组成,我们都知道C++中有头文件(.h),和实现的文件(.cpp),在头文件中声明一下变量,方法等等,而方法的实现就在cpp文件中实现。在实现文件中要包含当前头文件何必要的头文件(和C#中using引入的命名空间有点像),并且实现当前头文件中声明的方法等等。在C++中定义一个类格式如下(一般保存在头文件中):
【C#】在C#中定义一个类就很简单了,在.NET中为了更能区分各个类的层次等等引入了命名空间,每一个类都属于特定的命名空间。定义一个类如下:
【C++】C++也是面向对象的编程语言,当然也可以继承等等,它允许多重继承,一个类可以有几个基类。而继承的基类中的成员可见度是在继承中指定的,在MFC中所有类都直接或间接的继承自CObject类,这和C#中的所有类都继承自Object是一样的。格式如下:
<派生方式>:
public[ 常用]:除了私有成员外不可访问外,保留所有基类成员的访问级别。也就是说在当前类中可以访问基类中的public和protected的成员,在当前类的子类中也可以访问祖父类的成员(这和C#中的继承一样);
protected:基类所有的公有和保护成员在派生类中都成为保护成员(在当前类或子类中,基类的所有成员全为protected),只允许在派生类的成员函数和该派生类的派生类的成员函数中访问基类的非私有成员。
private[ 很少用]:基类所有的公有和保护成员在派生类中都成为私有成员,只允许在派生类的成员函数中访问基类的非私有成员。
【C#】在C#中继承就和C++中的public继承一样,但是C#只能够继承一个基类,但是可以继承多个接口。而决定继承或不让继承的类还可以通过构造函数或sealed来限定类型,使得当前类不能够被继承。
在不断的学习中可以知道他们的区别,现在很多人都在用.NET的,也有很多人有意转向C++,本人也是刚开始学习C++把我所想到的所看到的记录下来,希望可以给大家同仁一点帮助,也能够巩固一下自己的学习!!!
【C++】在这里我们主要讲讲C++,而且会偏重VC++。首先让我们看看C++的文件组成,我们都知道C++中有头文件(.h),和实现的文件(.cpp),在头文件中声明一下变量,方法等等,而方法的实现就在cpp文件中实现。在实现文件中要包含当前头文件何必要的头文件(和C#中using引入的命名空间有点像),并且实现当前头文件中声明的方法等等。在C++中定义一个类格式如下(一般保存在头文件中):
1
class
<
类名
>
2 {
3 private :
4 < 私有数据成员和私有成员函数的声明列表 > ;
5 public :
6 < 公有数据成员和公有成员函数的声明列表 > ;
7 protected :
8 < 保护数据成员和保护成员函数的声明列表 > ;
9 };
10
2 {
3 private :
4 < 私有数据成员和私有成员函数的声明列表 > ;
5 public :
6 < 公有数据成员和公有成员函数的声明列表 > ;
7 protected :
8 < 保护数据成员和保护成员函数的声明列表 > ;
9 };
10
【C#】在C#中定义一个类就很简单了,在.NET中为了更能区分各个类的层次等等引入了命名空间,每一个类都属于特定的命名空间。定义一个类如下:
using 引入所要用到的命名空间
namespace 命名空间
{
public/private/protected/internal [statics] <类名>
{
成员:...
}
}
namespace 命名空间
{
public/private/protected/internal [statics] <类名>
{
成员:...
}
}
【C++】C++也是面向对象的编程语言,当然也可以继承等等,它允许多重继承,一个类可以有几个基类。而继承的基类中的成员可见度是在继承中指定的,在MFC中所有类都直接或间接的继承自CObject类,这和C#中的所有类都继承自Object是一样的。格式如下:
class <派生类名> : [<派生方式>] <基类名>
{
. . . // 派生类新增加的成员声明列表
};
<派生方式>:
public[ 常用]:除了私有成员外不可访问外,保留所有基类成员的访问级别。也就是说在当前类中可以访问基类中的public和protected的成员,在当前类的子类中也可以访问祖父类的成员(这和C#中的继承一样);
protected:基类所有的公有和保护成员在派生类中都成为保护成员(在当前类或子类中,基类的所有成员全为protected),只允许在派生类的成员函数和该派生类的派生类的成员函数中访问基类的非私有成员。
private[ 很少用]:基类所有的公有和保护成员在派生类中都成为私有成员,只允许在派生类的成员函数中访问基类的非私有成员。
【C#】在C#中继承就和C++中的public继承一样,但是C#只能够继承一个基类,但是可以继承多个接口。而决定继承或不让继承的类还可以通过构造函数或sealed来限定类型,使得当前类不能够被继承。
友情提示(好的命名方式可以帮助代码的可读性):
C++中类的命名以C开头(而C#没有此规定);
g_:全局作用域;
m_:成员变量;
l_:局部作用域。
C++中类的命名以C开头(而C#没有此规定);
g_:全局作用域;
m_:成员变量;
l_:局部作用域。
在不断的学习中可以知道他们的区别,现在很多人都在用.NET的,也有很多人有意转向C++,本人也是刚开始学习C++把我所想到的所看到的记录下来,希望可以给大家同仁一点帮助,也能够巩固一下自己的学习!!!
本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2007/06/30/csharp_cpp_class.html,如需转载请自行联系原作者