当前位置: 首页 > news >正文

[C#C++]类CLASS

很早就有学习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++中定义一个类格式如下(一般保存在头文件中):
 1      class    < 类名 >
 2      {
 3          private
 4               < 私有数据成员和私有成员函数的声明列表 > ;
 5          public
 6               < 公有数据成员和公有成员函数的声明列表 > ;
 7          protected
 8               < 保护数据成员和保护成员函数的声明列表 > ;
 9      };
10 

【C#】在C#中定义一个类就很简单了,在.NET中为了更能区分各个类的层次等等引入了命名空间,每一个类都属于特定的命名空间。定义一个类如下:
using 引入所要用到的命名空间

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_:局部作用域。

    在不断的学习中可以知道他们的区别,现在很多人都在用.NET的,也有很多人有意转向C++,本人也是刚开始学习C++把我所想到的所看到的记录下来,希望可以给大家同仁一点帮助,也能够巩固一下自己的学习!!!

本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2007/06/30/csharp_cpp_class.html,如需转载请自行联系原作者

相关文章:

  • IBM推出新 DNS 服务(9.9.9.9)
  • 性能基准自动化测试
  • 个人站长充电需靠“网游神三剑客”
  • ;号自动换行
  • 第三次作业 统计分析报告
  • 关于大数据项目创建时所需setting.xml(博主推荐)
  • python脚本
  • 7.Emmet----HTML以及CSS的缩写请查看
  • 教学思路SQL之入门习题《学生成绩》 四、多表连接关系查询
  • WebAPi返回类型到底应该是什么才合适,这是个问题?
  • 用枚举实现工厂方法模式更简洁
  • 关于android.view.WindowLeaked异常的解决方案
  • 十六进制转化为ASCII码引起的的进制的故事
  • 1、虚拟机安装
  • apache虚拟主机用户验证
  • 30天自制操作系统-2
  • android 一些 utils
  • GraphQL学习过程应该是这样的
  • HTTP那些事
  • JavaScript函数式编程(一)
  • JavaWeb(学习笔记二)
  • js操作时间(持续更新)
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • MySQL-事务管理(基础)
  • Puppeteer:浏览器控制器
  • Python进阶细节
  • Selenium实战教程系列(二)---元素定位
  • Swoft 源码剖析 - 代码自动更新机制
  • Vue.js 移动端适配之 vw 解决方案
  • 当SetTimeout遇到了字符串
  • 反思总结然后整装待发
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 简单易用的leetcode开发测试工具(npm)
  • 今年的LC3大会没了?
  • 使用 @font-face
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​queue --- 一个同步的队列类​
  • #pragma once与条件编译
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (11)MSP430F5529 定时器B
  • (bean配置类的注解开发)学习Spring的第十三天
  • (ibm)Java 语言的 XPath API
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (分布式缓存)Redis持久化
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)计算机毕业设计ssm电影分享网站
  • (转)http-server应用
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .Mobi域名介绍
  • .net 后台导出excel ,word
  • .net中生成excel后调整宽度
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • @RequestParam,@RequestBody和@PathVariable 区别
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution