构造函数继承

本文通过实例详细介绍了JavaScript中构造函数的使用,包括Person基类的定义及其在Teacher、Student和Employee子类中的继承实现。展示了如何利用call和apply方法进行属性初始化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 公共函数
function Person(name, age, sex, address, phone) {
this.name = name;
this.age = age;
this.sex = sex;
this.address = address;
this.phone = phone;
console.log(this.name)
}

    function Teacher(name, age, sex, address, phone, course) {
        // 当Person函数被调用时,其Person函数体中的this指向的是 Teacher 函数中 this 所表示的对象
        Person.call(this, name, age, sex, address, phone);
        this.course = course;
    }



    function Student(name, age, sex, address, phone, grade) {
        Person.apply(this, arguments);
        this.grade = grade;
    }

    function Employee(name, age, sex, address, phone, dep) {
        Person.apply(this, arguments);
        this.dep = dep;
    }

    var t = new Teacher("小丁", 15, "男", "成都", "13177665544", "HTML+CSS");
    console.log(t);
    var s = new Student("小丁", 15, "男", "成都", "13177665544", "一年级");
    console.log(s);
    var e = new Employee("小丁", 15, "男", "成都", "13177665544", "项目部");
    console.log(e);
### C++ 中构造函数继承规则和用法 #### 隐式声明的继承构造函数 在C++11标准下,继承构造函数的设计更加精巧,这些构造函数可以像派生类中的其他默认函数(如默认构造函数、析构函数、拷贝构造函数等)一样被隐式声明[^1]。 #### 使用 `using` 声明继承构造函数 为了简化代码并提高可维护性,C++11引入了一种机制,允许派生类通过使用`using`声明来继承基类的构造函数。这使得派生类可以直接利用基类已有的构造逻辑而无需重复编写相似的构造函数代码[^4]。 下面是一个具体的例子展示如何实现这一点: ```cpp #include <string> using namespace std; class Base { public: Base(string s) : str(s) {} Base(int n) : num(n) {} private: string str; int num; }; class Derived : public Base { public: using Base::Base; // 继承所有来自Base的构造函数 // 可能还需要额外的Derived特有的构造函数... }; ``` 在这个例子中,`Derived` 类不仅获得了它自己定义的新特性,还自动拥有了从 `Base` 类那里继承过来的各种形式的构造方法。 #### 构造函数职责与初始化 值得注意的是,在设计任何类型的构造函数时——无论是普通的还是继承下来的——都应当确保它们能够创建完全初始化的对象,并且当遇到无法构建有效状态的情况时应该抛出异常而不是留下未完成的状态[^5]。 对于涉及动态内存管理或其他资源获取的情形,务必小心处理以防止潜在的风险;例如,在上述案例之外的情况下可能需要考虑深浅复制的区别以及相应的清理工作[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值