zooo 发表于 2016-1-24 13:20:31

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

本帖最后由 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;
}



运行结果

仰望天上的光 发表于 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
页: [1]
查看完整版本: 【新手】C++类中定义函数的问题