鱼C论坛

 找回密码
 立即注册
查看: 1268|回复: 1

【新手】C++类中定义函数的问题

[复制链接]
发表于 2016-1-24 13:20:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 zooo 于 2016-1-24 16:46 编辑

当函数的形参和类中变量的名字相同时,就无法给属性赋值,为什么会出现这种情况?
类中的函数是如何对类的成员进行操作的?
#include <iostream>
class Car
{
        public:
        std::string color;
        std::string engine;
        int liter;//油量
        int wheel;
        void setColor(std::string color);
        void setEngine(std::string eng);
        void setWheel(int wel);
};
void Car::setColor(std::string /*calr*/color)
{
        color = color;
        //color = calr;
}
void Car::setEngine(std::string eng)
{
        engine = eng;
}
void Car::setWheel(int wel)
{
        wheel = wel;
}
int main()
{
        Car mycar;
        mycar.setColor("Black");
        mycar.setEngine("V8");
        mycar.setWheel(4);
        std::cout<<"Color is:"<<mycar.color<<"\n";
        std::cout<<"Engine is:"<<mycar.engine<<"\n";
        std::cout<<"The num of wheel:"<<mycar.wheel<<"\n";
        return 0;
}

运行结果
sshot-1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-1-24 23:19:50 | 显示全部楼层
void Car::setColor(std::string /*calr*/color)

{

        color = color;

        //color = calr;

}

你觉得这里的color 应该指这个成员函数的形参color还是数据成员color?通过你的实验证明了color = color;
这句的两个color都是形参color,这时要使用数据成员color只能用
this->color = color;也就是说this->color是指数据成员color
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 18:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表