常对象,常方法,静态成员变量/方法

类默认为私有,结构体默认为公有。
初始化列表:只有构造函数有初始化列表,必须初始化的成员需要放在初始化列表
在本对象构造之前需要完成的动作,必须放在初始化列表。
const成员和引用必须放在初始化列表
this指针是Person* const this类型,修饰的是this所指的对象不能变,(不加const)
const Person p1(“xiaohua”,18,0);这个函数中是Person const * this,和上面不加const的不一样,所以得在函数后面加const。这改变的是this指针,使指针类型变为Person const *const this.

const int _sex;因为用const所以必须要初始化
int& _last_name;也得初始化
public:
Person()
     :_sex(1)初始化,得用括号,等号不行
{
_sex=1;这是赋值
}
Person(const Person& src):sex(src._sex)拷贝构造也是构造函数所以可以使用初始化列表进行初始化。_last_name(_name){
}

常对象只能调用常方法------构造,析构,静态函数不受影响,普通对象对象可以调用常方法,安全性可以增加不能减少。
常方法(函数后加const)只能调用常方法
静态成员变量,一个类只有一个,存储在数据段,必须在类外的.cpp文件中进行初始化,且只能初始化一次,
在类外初始化时不需要加static,int Person::_num=0;
静态成员变量的访问不依赖于对象,cout<<Person::_num<<endl它存储在数据段,其他变量跟随自己的对象存储。;

静态成员方法无this指针,它的访问不依赖this指针,也不依赖对象。静态成员方法内只能调用静态成员变量。

int& get_age()
{return _age;}
int& get_age()const
{return _age;}
它俩互为重载

那些成员方法需要写成常方法
1.如果成员方法内不需要改动成员,并且没有对外暴露成员引用或者指针,就可以直接写成常方法。
2,如果成员方法内部不需要改动成员,但是会对外暴露成员引用或者指针,就写两个成员方法(const和非const),形成重载。
3.如果成员方法内部需要改动成员,就写普通方法。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值