• 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中,总觉得看起来有些硬凑的感觉。

  • 相关阅读:
    编码实现Spring 利用@Resource注解实现bean的注入,xml实现基本数据类型的注入
    Spring依赖注入
    Spring的DI(Ioc)
    Spring的DI(Ioc)
    Spring的DI(Ioc)
    Spring管理bean的生命周期
    Spring管理Bean的三种创建方式
    简单模拟Spring管理Bean对象
    编写spring配置文件时,不能出现帮助信息
    Spring简介
  • 原文地址:https://www.cnblogs.com/zhjh256/p/6361491.html
Copyright © 2020-2023  润新知