关于c++概念的一些理解

本文深入探讨了C++中类与对象的生命周期管理,解释了类数据成员初始化的限制,强调了对象空间大小仅由数据成员决定而非成员函数,详细解析了常对象的概念以及静态数据成员和静态成员函数的使用场景。同时,通过实例展示了对象复制机制和模板函数的灵活应用。
摘要由CSDN通过智能技术生成

以前也断断续续看过c++的一些书籍,总是看完就忘,今天重新拾起,以前不理解的居然就理解了,难得真的归功于这几天的编码吗?趁着理解,先记录在电脑里吧。

类的数据成员是不能在声明类时初始化的,下面的写法是错误的:

class Time

{

hour = 0;

minute=0;

sec=0;

};

因为类并不是一个实体,而是一种抽象类型,并不占用存储空间,显然无法容纳数据。因此可以在类中引用 如 int &x,而不用初始化。在实例化时,再初始化。


一个对象所占用的空间大小只取决于该对象中数据成员所占用的空间,而与成员函数无关。函数代码是存储在对象空间之外的,如果对同一个类定义了n个的对象,这些对象的成员函数对应的是同一个函数代码段,而不是n个。

class Box

{

public:

Box(int h=10,int w=10,int len=10);

}可以改写为 Box(int=10,int=10,int=10);

参数初始化表:Box::Box(int h,int w,int len):height(h),width(w),length(len){}


常对象:

const 类名 对象名(实参列表); 或 类名 const 对象名(实参列表); 

类的数据成员中不能包括动态分配的数据,否则在对象赋值时可能出现严重后果。Box s1,s2;

s1 = s2; 对象的赋值只对其中的数据成员赋值,而不对成员函数赋值。成员函数共占一个存储空间。


对象的复制:Box box2(box1); box1已经先建立。此时会调用 复制构造函数。或者这样写也行 Box box2=box1;

静态的数据成员在内存中只占用一份空间,而不是每个对象都为他保留一份空间,每个对象都可以引用这个静态数据成员。静态数据成员是在程序结束时才被释放。

静态数据成员只能在类外初始化。不能用参数初始化表对静态数据成员初始化。静态数据成员既可以通过对象名来引用,也可以通过类名来引用。(不论对象是否建立),如果静态数据成员是私有的,则不能在类外直接引用,必须通过公用的成员函数引用。

静态成员函数没有this指针,不能(默认访问)本类中的非静态成员。主要是用来访问静态数据成员的。

template 函数 make_pair() 可以不用写出型别,就可以生成一个pair对象。pair<int,float>(43,77.3) 与 make_pair(43,77.3) 结果不同, make_pair第二个参数为double, 因为“无任何修饰的浮点数”默认为double.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值