#include <iostream>
#include <string>
using namespace std;
class Student
{
public:
Student();
Student(string i,string n,string g):id(i),name(n),gra(g){}
string GetValue();
private:
string id,name,gra;
};
string Student::GetValue()
{
return this->id; // 返回当前对象的id
}
int main(void)
{
Student s1("020112","张XX","软件一班");
Student s2("020113","黄XX","软件二班");
cout<<"s1id="<<s1GetValue()<<endl; // s1对象调用id
return 1;
}
和人交流时发现,现在面试可能会问到如何手写一个new,也就是如何自己手写方法实现new()功能 ,觉得自己从没想过,记录一下。
首先 js是如何实现new的
function Person(name){
thisname = name
}
Personprototypeeat =function() {
consolelog("Eating")
}
var qd = new Person('qd')
consolelog(qd)
qdeat();
这就是js如何使用一个new的方法
手写new如下:
function create() {
//1获取构造函数,并删除arguments中的第一项
var Con = []shiftcall(arguments);
//2创建一个空对象并连接到构造函数的原型,使它能够访问原型中的属性
var obj = Objectcreate(Conprototype);
// 3使用apply改变构造函数中this的指向实现继承,使obj能够访问到构造函数中的属性
var ret = Conapply(obj,arguments);
4优先返回构造函数返回的对象
return ret instanceof Object ret : obj;
}
function Person (name) {
thisname = name
}
Personprototypeeat =function() {
consolelog("Eating")
}
//调用
var qdleader = create(Person,'qdleader');
consolelog(qdleader);
qdleadereat()
当然 create也可以这样写
function create() {
// 创建一个空的对象
let obj = {}
// 获得构造函数
// 因为 arguments 类数组,所以我们可以用数组的shift来实现 arguments 的 ‘push’ 和 ‘pop’
// 将 arguments 进数组,并将第一个元素移除并赋值给
Con (Constructor)letCon = []shiftcall(arguments)
// 链接到原型
obj__proto__ = Conprototype
// 绑定this,并执行构造函数,就相当于 obj constructor(arguments)
let result = Conapply(obj, arguments)
// 确保 new 出来的是个对象
return typeof result ==='object' result : obj
}
当然现实开发咱们直接使用new就好,这都是面试官测试你的专业知识而已,参考了网上的各种文章,不会百度的前端不是好的橱子。
你的构造函数里面并没有做任何 *** 作。你定义并初始化num值是1,然后你直接调用了get方法来获取这个初始值,所以就是1啊。除非你在构造函数里面做了类似set方法里面的 *** 作,或者直接在构造函数里面调用set方法。例如:
public class Test {
private int num = 1;
Test(int x) {
// thissetNum(x);
thisnum = x + 2;
}
public void setNum(int x) {
thisnum = x + 2;
}
public int getNum() {
return num;
}
}
以上就是关于[如图]C++中如何调用构造函数中对象的数值全部的内容,包括:[如图]C++中如何调用构造函数中对象的数值、如何手写一个new、java中构造函数和set,get方法求解释。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)