- 主题:以非耍流氓的方式讨论C++中的面向对象编程
这种没有明确公开到到台面的用法确实会导致一些问题
但是可以通过使用container_of来解决这种必须放在struct第一位的问题
【 在 ArchLinux (a lightweight and flexible distribution) 的大作中提到: 】
: C语言做面向对象当然是可以的,但是没有类型检查,新手碰这样的代码还容易出问题。
: 前段时间我有个同事搞QEMU,实现了个新设备的模拟,总是运行出错,最后才发现他没把
: parentObject放到第一个字段导致类似ABI不匹配的错误。
: ...................
--
FROM 193.70.39.*
linux内核中到处是这种用法
配合container_of offsetof来使用
但是别处并不多见
【 在 littleSram (littleSram) 的大作中提到: 】
: go也是这么设计的,可以内嵌struct
--
FROM 193.70.39.*
【 在 spoon123 (勺子) 的大作中提到: 】
: 来将通名!:)
: 你是哈工大的学生吗? 那一届的?
你一共也没有教过几届吧, 我们是勉强赶上你的最后一届了
你走了之后哈工大的这门课就沦落到和五道口职业技术学院差不多了
: C语言其实是不错的。尤其是开发一些内核和嵌入式设备。
: ...................
我就是做嵌入式的, 老师有没有能介绍人去休斯顿大学工作的门路呢? 刷盘子的工作也行的
--
FROM 193.70.39.*
继承(is-a)和组合(has-a)是不同的概念。继承的好处是可以被传入需要父类的参数。
has-a 配合模板确实也能实现代码复用。
但我觉得是同一件事的两种不同实现方式,没法说优劣。
c++ 继承有个技巧可以避免多继承,不知道大家有没有玩过:
template<typename T>
class FileMixin: public T
{
public:
FileMixin() : size(0), mode(0) {}
public:
QString name;
quint64 size;
QDateTime modified;
QDateTime created;
public:
bool isValid() const { return !name.isEmpty(); }
};
class File: public FileMixin<FileSystemNode> {};
【 在 frosen (WinterSweet) 的大作中提到: 】
: 看了一小半看不下去了
: c++也是在发展的
: 别拿这些老掉牙东西翻来覆去的折腾了
: ...................
--
修改:hgoldfish FROM 112.47.122.*
FROM 112.47.122.*
【 在 uju 的大作中提到: 】
: 你一共也没有教过几届吧, 我们是勉强赶上你的最后一届了
: 你走了之后哈工大的这门课就沦落到和五道口职业技术学院差不多了
:
: ...................
现在最大的问题就是中美之间都不通飞机了。如果想来美国工作,最方面的途径就是来这读个硕士,毕业后找工作。直接找工作很难,没有公司愿意办H1-B.
--
FROM 99.99.218.*
没错,看着感觉就是在讲golang里面的interface的设计理念。
【 在 hongdiao 的大作中提到: 】
: 你需要的是GoLang
: --
发自「今日水木 on PCT-AL10」
--
修改:eematlab FROM 101.86.16.*
FROM 101.86.16.*