构造函数的特点

构造函数的特点

  1. 在代码的写法上:函数名首字母大写(建议)
  2. 构造函数的调用时new调用
  3. 构造函数虽然没有返回值,在预编译的时候,会自动增加return this
  4. 构造函数一开始默认会有new Object()
在C++中,构造函数是一个特殊类型的成员函数,它的名称与类名相同,并且主要用于初始化对象的状态。以下是构造函数的一些关键特点: ### 1. 名称一致 构造函数的名字必须和类的名字完全一样。 ```cpp class MyClass { public: MyClass(); // 构造函数 }; ``` ### 2. 自动调用 每当创建一个新的对象时,相应的构造函数会自动被执行一次,以完成对该对象的初始化工作。 ```cpp MyClass obj; // 创建对象obj的同时调用了默认构造函数 ``` ### 3. 不返回值 构造函数没有任何返回类型声明(甚至不包括 void)。这是因为它们的主要职责不是计算结果并返回给调用者,而是确保新建立的对象处于有效状态之中。 ```cpp // 正确示例 MyClass() { /* 初始化代码 */ } // 错误示例 - 具有返回类型是非法的 int MyClass() { } void MyClass() { } ``` ### 4. 参数列表可选 可以根据需求设计带参或无参版本的构造函数;若提供后者,则称之为“默认”构造函数,允许用户无需传递额外信息就能实例化一个实体出来。 #### 默认构造函数: ```cpp class Point{ private: int x,y; public: Point():x(0),y(0){} // 将坐标设为原点处初始值零 }; Point p;// 调用默认构造函数设定p的位置位于笛卡尔平面中心即(x=0, y=0) ``` #### 带参数构造函数: ```cpp class Rectangle{ private: double length,width ; public: Rectangle(double len,double wid) :length(len),width(wid){} }; Rectangle box(5 ,7 ); // 使用指定尺寸构造矩形box ``` 此外还存在复制构造函数的概念,它是用来生成现有对象副本时候使用的特别形式之一。 ### 5. 成员变量初始化 通常会在初始化列表里设置某些数据元素初识数值而不是等到主体内部再赋值处理效率更高也更安全一些。 例如下面的例子展示了如何利用初始化列表对指针型属性进行合理地置空操作防止悬垂引用问题出现: ```cpp class Person { private: std::string *namePtr; public: Person(std::string name): namePtr(new std::string(name)) {} ~Person(){ delete namePtr;} }; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值