一些有意思的问题

python 的面向对象与c++的面向对象,有哪些不一样的点?

这个回答一定要有条理,从浅入深,有很多点,不可简单的天马行空的说,自己还觉得很牛逼,但实际上答案不全面。

1. 类定义和语法上:

     c++ 需要显示声明类成员的访问控制,默认是private,一般情况下函数原型在类中声明,函数体在类外定义。

     python 类的定义实际更简洁,默认是public,使用两个下划线定义的变量__指定private,但实际这个的权限控制并不严格,可以通过_classname__variablename 进行访问,因此严格的说,python说没有private变量。

2. 继承

    c++: 需要显示指定继承类型,private、public、protected, 但

3. 多态

c++: 通过虚函数(virtual)和指针或引用实现多态度

python:默认支持多态,不需要显示定义,方法覆盖需要通过动态绑定实现。

4. 内存管理

c++: 需要手动管理内存,使用new delete进行动态的分配和释放,std::shared_ptr, std::ubique_ptr 可以帮助管理内存泄露问题。

python: 有自动内存管理和垃圾回收机制,对象生命周期由引用计数器和垃圾收集器控制,无需手动释放内存。

5. 封装与访问控制

c++: 使用显示public、private、protected来控制成员的访问权限,私有成员不能直接从类外访问,默认是private。

python:默认所有成员均是public,通过命名约定(单下划线和双下划线)来提示访问权限,但实际仍然可访问。

6. 抽象与接口

c++:通过纯虚函数定义抽象类,抽象类不能实例化,必须由派生类实现所有纯虚函数。

python:通过abc 抽象基类定义抽象类,也可以使用@abstractmethod装饰器声明抽象方法。

7. 动态性

c++: 静态类型语言,编译时确定类型,类型检查严格

python:动态类型语言,运行时确定类型。

Python内存管理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值