VS2019 C++是本来就行还是BUG
本帖最后由 dianfu5261 于 2022-1-3 07:32 编辑通过成员判断两个立方体的那里,按道理应该只能用c.get*
而我直接用c.m_*也可以,运行不报错,结果也正常
是设计本来就行吗?(为什么)
#include <iostream>
using namespace std;
class cube {
public:
//设置长
void setL(int l) {
m_L = l;
}
//获取长
int getL() {
return m_L;
}
//设置宽
void setW(int w) {
m_W = w;
}
//获取宽
int getW() {
return m_W;
}
//设置高
void setH(int h) {
m_H = h;
}
//获取高
int getH() {
return m_H;
}
//求面积
int calculateS() {
return 2 * (m_L * m_W + m_L * m_H + m_W * m_H);
}
//求体积
int calculateV() {
return m_L * m_W * m_H;
}
//通过成员函数判断两个立方体是否相等
bool isSamebyclass(cube& c) {
//c.m_L = 11;
if (m_L * m_W * m_H == c.m_L * c.m_W * c.m_H) {//c.m_L和c.getL都能访问
return true;
}return false;
}
private:
int m_L;//长
int m_W;//宽
int m_H;//高
};
//利用全局函数判断两个立方体是否相等
bool isSame(cube& c1, cube& c2) {
if (c1.getL() * c1.getW() * c1.getH() == c2.getL() * c2.getW() * c2.getH()) {
return true;
}return false;
}
int main() {
cube c;
c.setL(10);
c.setW(10);
c.setH(10);
cout << "立方体的面积为:" << c.calculateS() <<"平方米"<< endl;
cout << "立方体的体积为:" << c.calculateV() << "立方米"<<endl;
cube c1;
c1.setL(10);
c1.setW(10);
c1.setH(10);
bool ret = isSame(c, c1);
if (ret) {
cout << "两个立方体相等" << endl;
}
else {
cout << "c1和c2不相等" << endl;
}
bool ret1 = c.isSamebyclass(c1);
if (ret1) {
cout << "两个立方体相等" << endl;
}
else {
cout << "c1和c2不相等" << endl;
}
system("pause");
return 0;
}
什么叫"只能用c.get*"
没明白你在说什么 万物皆地址,不能只看表面 不然呢?自己的成员变量自己不能用?那要成员变量干啥用的? 私有成员变量仅类的内部可以使用,其余包括外部实例化的对象均不能使用
成员函数也是在类的内部实现的,当然可以使用 楼主好好学学类的定义创建和使用吧,这基础的知识,类的私有成员自己肯定可以用啊 哦,我懂了,那里应该是相当于实例本身。属于C类访问C本身属性
我一直想成这里是读取另一个实例的数据
谢谢各位
页:
[1]