c++类与对象(一)

一、类的大小及类的成员在内存中的存放

        类中有成员变量,也有成员函数,成员变量有不同的值,但是成员函数都是相同的,多个类对象重复存储成员函数是没有意义的,所以采用成员变量和成员函数分离的方法,每个对象保存自己的成员变量,但是只保存一份公共的成员函数。

二、this指针

        C++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变量的操作,都是通过该指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。这是类的成员函数能够被不同的类调用时精确访问的关键。

三、构造和析构函数和拷贝构造函数

        构造函数用于初始化一个对象,函数名与类名完全相同,没有任何返回值,就连void也没有,
        析构函数是构造函数的反义词,用于在对象释放内存之前对其成员进行清理,析构函数名为类名之前加上~,同样没有返回值。
        拷贝构造函数也叫做副本构造函数,用于使用对象初始化另一个对象,函数名和类名相同,无返回值,另外,拷贝构造函数的参数为类对象的引用类型,原因是如果为类对象,那么在传参时又会调用拷贝构造函数,也就是他本身,如此会造成死循环递归。
        需要注意的是这三种构造函数都是对对象进行处理,不是说去为对象开辟空间或回收空间,是在对象已经开辟好的情况下处理而已。

四、赋值运算符重载

        运算符重载是指针对不同的类设计出不同的运算符运算方法,使用operator关键字进行重载运算符。类默认有赋值运算符的重载函数,如下:

class& operator = (const class& obj)
{
	......
	return *this;
}

        赋值运算符重载函数返回值为左值的引用是防止有连续赋值的情况,a = b =c被解析为a.operator = (b.operator = (c)),此时如果函数没有返回值,那么a调用函数会报错。

五、常方法

        常方法是指在定义方法时在方法标签后加一个const,常方法就是不能修改类成员变量的方法。

int a(int b, int c) const
{
	......
}

        常方法不能修改成员变量其原理还是this指针,const修饰的其实是影藏的this指针,所以没有this指针的方法是不能使用const定义为常方法的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值