zoukankan      html  css  js  c++  java
  • c++的class声明及相比java的更合理之处

    或许是基于一直以来c/c++头文件声明和cXX实现物理上置于独立文件的考虑,c++中的OO在现实中基本上也是按照声明和实现分离的方式进行管理和编译,如下所示:

    Base.h

    #pragma once
    class Base
    {
    public:
        int i; //仅为了测试方便
        Base(void);
        ~Base(void);
        virtual void testDynCast();
    };

    Base.cpp

    #include "stdafx.h"
    #include "Base.h"
    #include <iostream>
    using namespace std;
    Base::Base(void)
    {
    }
    
    
    Base::~Base(void)
    {
    }
    
    void Base::testDynCast() {
        cout << i << endl;
    }

    分发给客户的时候,我们只要提供Base.h和Base.cpp编译后的so或者a即可。如下:

    #include "Base.h"
    int _tmain(int argc, _TCHAR* argv[])
    {
        Derived derived = Derived();
        derived.i = 100;
        derived.testDynCast();
        Base* dp1 = &derived;
    }

    相较于于java的interface/class,惯例上,一般我们在interface只包含接口,不会包含pojo或者属性(虽然interface也可以包含属性,但要求必须是final的)。对于精心设计的系统而言,c++的声明、定义分离方式,对于客户而言,服务和对应的领域对象组织在一起,个人觉得使用/维护起来更加的自然,对于java,单独维护在package中,总觉得看起来有些硬凑的感觉。

  • 相关阅读:
    使用ansible实现批量免密认证
    python自如爬虫
    python批量发邮件
    诸葛亮诫子书
    CSS3阴影 box-shadow的使用和技巧总结
    js必须掌握的基础
    心态不好,你将永远是个弱者!
    Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
    xampp的安装和配置
    css3动画
  • 原文地址:https://www.cnblogs.com/zhjh256/p/6361491.html
Copyright © 2011-2022 走看看