[如图]C++中如何调用构造函数中对象的数值

[如图]C++中如何调用构造函数中对象的数值,第1张

#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方法求解释。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9414193.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存