c++类、对象及其成员的定义

本文深入探讨了C++程序设计语言中封装性的核心概念,以及如何通过私有数据成员与公有成员函数实现数据保护。同时解释了内联函数的工作原理和使用场景,包括其对代码体积的影响及限制条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c++程序设计语言具有封装性、多态性和继承性,简单来说封装性就是将一个类的数据成员设置为私有类型,仅在类内可见,对象不可在类外访问它的数据成员。这就需要为类设置一个或多个接口,以便对象操作或访问其数据成员。由此在类中设置公有类型的成员函数,通过成员函数这个接口,来操作类中的私有数据。那么为什么c++要先设置私有数据成员,再用公有成员函数来访问它呢?一是提高了代码的安全性,防止错误的输入和输出。比如我们输入了一个超出范围的数,又或者说有时候我们要控制用户输入数的范围,都可以通过设置接口来实现。二是类中的成员函数相互之间比较独立,当一个函数对数据的操作改变时,不会影响其他函数的改变。比如下面的代码:

#include<iostream>
using namespace std;
class Human
{
public:
    void SetTall(int x);
    void SetWeight(int x);
    void GetTall();
    void GetWeight();
private:               //私有数据成员,对象不能在类之外访问
    int tall;
    int weight;
};
void Human::SetTall(int x)    //::是域作用符,表示SetTall是Human类中的成员
{
    tall=x;
}
void Human::SetWeight(int x)
{     
    if(x>=90&&x<=120)          //控制数据的输入范围
        weight=x;
    else
        {
            cout<<"请输入90~120之间的数字,否则体重默认为92"<<endl;
            weight=92;
        }

}
void Human::GetTall()
{
    cout<<tall<<endl;
}
void Human::GetWeight()
{
    cout<<weight<<endl;
}

int main()
{
    Human tang;
    int x;
    cout<<"请输入tang的身高:"<<endl;
    cin>>x;
    tang.SetTall(x);
    cout<<"请输入tang的体重:"<<endl;
    cin>>x;
    tang.SetWeight(x);
    cout<<"身高:"<<endl;
    tang.GetWeight();
    cout<<"体重:"<<endl;
    tang.GetTall();
    return 0;
}

运行结果:


内联函数:

内联函数是用inline关键字修饰的函数,它具备函数的结构,但是却没有函数的性质。一般的函数在调用时,会回到函数定义的地方执行子函数,执行完毕后再返回到主函数,继续向下一子句执行代码。但是内联函数则是将整段代码在编译的时候复制到调用的地方执行,避免了执行期间的跳转,省去了调用过程。但须注意的是,由于每当代码调用到内联函数,就需要在调用处直接插入一段该函数的代码,所以程序的体积将增大。内联函数的实质就是牺牲一定的空间,换取代码执行的时间。

class S
{
public:
    inline void fun(int x);//显示声明内联函数
    void Show()//隐式声明(默认)内联函数
    {
        cout<<a;
    }
private:
    int a;
};
inline void S::fun(int x)
{
    a=x;
}

但是编译器也不是完全按照内联函数的定义来执行,是否被当作内联函数,还要视代码段的大小而定。假如一段代码占用空间很大,或者在主函数中被多次调用,即使声明了为内联函数,编译器也还是会当作普通函数来处理;内联函数体中,不能有循环语句、if语句或switch语句,否则,函数定义时即使有inline关键字,编译器也会把该函数作为非内联函数处理。一小段子函数没有声明为内联函数,编译器也可能当作内联函数来处理。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值