欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > 十一.C++ 类 -- 面向对象思想

十一.C++ 类 -- 面向对象思想

2025/6/13 11:38:59 来源:https://blog.csdn.net/wydaicls/article/details/148512079  浏览:    关键词:十一.C++ 类 -- 面向对象思想

类的定义

class/struct 类名 : 继承方式,基类...{
    类名(行参表):成员变量(初值)...{
        函数体;
    }


    ~类名(void){
        函数体;
    }
    
    返回类型 函数名 (形参表) 常属性 异常说明{
        函数体;
    }
    
    数据类型 变量名;
    
}

访问控制限定符

  • public 共有成员 谁都可以访问

  • private 私有成员 只有自己可以访问

  • protected 保护成员,只有自己和子类可以访问

成员变量

成员变量在对象中存着

成员函数

成员函数在代码端储存

 

class Human
{
public:Human();~Human();void setInfo(int age,const char* name){m_age = age;strcpy_s(m_name, name);};void getInfo(){cout << "age = " << m_age << " name = " << m_name << endl;};private:int age;char name[256];
};Human::Human()
{
}Human::~Human()
{
}int main()
{Human h;h.setInfo(20, "wyd");h.getInfo();   // age = 20 name = wyd
}

This指针

C++成员函数模型

  • 类的每个成员函数(除静态成员函数外),都有一个隐藏的指针型参数,形参名为this,指向调用该成员函数的对象,这就是this指针

  • 在类的成员函数中(除静态成员函数外),对所有成员的访问,都是通过this指针进行的

void setInfo(/* 隐藏一个 Human* this指针 */int age,const char* name){m_age = age;strcpy_s(m_name, name);};void getInfo(/* Human* this */){cout << "age = " << m_age << " name = " << m_name << endl;};

 可以用另外一种写法证明:

void setInfo(/* 隐藏一个 Human* this指针 */int age,const char* name){this->age = age;strcpy_s(this->name, name);};void getInfo(/* Human* this */){cout << "age = " << this->age << " name = " << this->name << endl;};
this指针的应用(必须自己使用this的情况)
  • 多数情况下,程序并不需要显式的使用指针this

  • 有时为了方便,将类的成员变量与该成员函数的参数相同标识符,这时在成员函数内部,可以通过this指针将两者加以区分

void setInfo(int age,const char* name){this->age = age;strcpy_s(this->name, name);};void getInfo(){cout << "age = " << this->age << " name = " << this->name << endl;};private:int age;char name[256];
};
  • 返回基于this指针的自引用,以支持串连调用

Human& increment()
{++age;return *this;
}h.increment();h.getInfo();   // age = 21 name = wyd
  • 将this指针作为函数的参数,以实现对象交互

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词