c++一些问题想请教

小佳爱学习 2018-07-30 10:21:21
c++中关于class的问题
//我写一个简单的Student类
class Student
{
public:
int age;
int math;
int english;
int score;
public:
int getAge()
{
return age;
}
void setM(int m)
{
math = m;
}
void setE(int e)
{
english = e;
}
int getS()
{
score = math + english;
return score;
}
};
int main()
{
Student s1, s2;
s1.age = 13;
s1.setM(95);
s1.setE(70);
s2.age = 14;
s2.setM(85);
s2.setE(85);
cout << "xx同学" << s1.getAge() << "岁,总分:" << s1.getS() << endl;
cout << "xx同学" << s2.getAge() << "岁,总分:" << s2.getS() << endl;
return 0;
}
//输出的结果是:
xx同学13岁,总分:165
xx同学14岁,总分:170

关于以上代码我想请教:
1. 为什么可以Student s1, s2, .... ; 为什么可以定义无数个s1, s2, s3,...是怎样实现的呢,Student在内存中是一个地址吗?如果Student这个类名是一个地址,那么是s1,s2指向了这个地址还是Student这个地址指向了s1,s2呢?
2. 不管是指针还是引用,我们常常会说到"指向"这个词,那么在内存中是如何实现"指向"的呢,两个不同的内存地址0x0011 0x0022 是怎么关联起来的,怎么互相指向的
3. 我们可以直接给 s1.age属性赋值的方式来修改age,为什么有的时候还要再写一个getAge()的成员函数呢,不是多此一举吗?
4. 有时候我会觉得,一个变量(变量可以是各种各样的类型)或者一个数值字面量,在内存中可以传来传去真的挺神奇,也很好玩,但是有时候也会被搞得很乱,一会儿是传值,一会儿是传地址
到底哪种情况传值哪种情况传地址,有没有一些好的分辨技巧,还是说就死记硬背呢?这个跟编译器设计的语法有关系吗?
5. 我在自学编程的时候也一直想搞清楚计算机最底层的东西,后来我了解了一些知识: 晶体管可以组成触发器,这些触发器可以组合成加法器或者减法器之类,它们可以实现最基础的算法,比如加减法,而乘除法呢又可以通过加减运算来转换,乘法做两次循环运算呢就可以实现平方运算,就这样,一直迭代,就可以组合成一个功能比较强大的计算器了,如果计算机的一切操作皆运算,那么封装功能又是如何实现的呢,不光是封装继承功能,编程语言里面还有许多奇奇怪怪的功能,难道这也只是晶体管的减法器减法器就能模拟出来的吗?是不是cpu里面不光有晶体管,还有其它的什么东西呢?
6. 我们的编程语言是不是可以理解为: cpu指令集的高级扩展呢? 假如说cpu有一百多条指令集,我们把这些指令集互相组合迭代,然后把组合好的具有特定功能的这些指令集封装成一个函数或者一个命令(本质是2进制数,只不过编译器帮我们翻译成了人能看懂的语言),这些东西是不是就是我们常说的各种编程语言c/c++/java/python等等呢?
7. 如果操作系统是根据cpu指令集发展而来的,那是不是说只要cpu的指令集和一个操作系统兼容,那么不管这个cpu是谁造的都可以运行这个操作系统,在操作系统上运行一样的程序呢?
8. cpu的指令集是刻在cpu上的还是存储在寄存器里面的呢?我们可以去修改指令集吗?如何查看cpu的每一条指令集的详细信息呢(包含说明和用法文档)?
...全文
236 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
秘境之眼 2019-03-16
  • 打赏
  • 举报
回复
我只回答一个问题,你说int a,int b...,可以定义多多int类型变量;student s1,student s2...,可以定义许多student,其实student和int都是一种类型
ooolinux 2018-07-31
  • 打赏
  • 举报
回复
不过,国产教材的话,很多知识点是比较笼统的,你的问题能从中得到大概的了解,深入的细节、原理、机制之类,可能需要英文(或翻译版)的一手资料。
ooolinux 2018-07-31
  • 打赏
  • 举报
回复
你的问题太多了~
有问题很好,带着问题看书吧,计算机类专业主要课程的教材你都可以看,这些问题以后你都会慢慢搞懂,有些是看了书就会懂的,有些是“偶然”接触到后就懂了,需要点时间。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧