C++ 构造函数
2020-06-03 16:00:25来源:博客园 阅读 ()
C++ 构造函数
例一(类初始化错误用法):
struct thing { char * pn; int m; }; thing amabob = {"wodget", -23}; // valid initialization Stock hot = {"Sukie's Autos, Inc.", 200, 50.25}; // No! compile error
出错原因:数据访问状态私有(可改为公有,但违背数据隐藏的初衷)
特殊成员函数——类构造函数(可用于类初始化):
专门用于构造新对象(创建对象)、将值赋给它们的数据成员(初始化)。
- 原型位于类声明的公有部分
- 没有声明类型,名称与类名相同
- 程序声明对象时,将自动调用构造函数
- 参数名不能与类成员名相同
- 原因:此时构造函数内直接使用类成员名称会发生混乱
- 解决
- 方案一:数据成员名中使用m_前缀
- 方案二:成员名中使用后缀_
使用构造函数:
- 显示调用:
Stock food = Stock("World Cabbage", 250, 1.25); // 显示调用
- 隐式调用:
Stock garment("Furry Mason", 50, 2.5) // 隐式调用
结构更紧凑
- 可以与new结合使用:
Stock *pstock = new Stock("Electroshock Games", 18, 19.0) // 结合new使用隐式调用
- 接受一个参数的构造函数允许使用赋值语法将对象初始化为一个值:
Classname object = value; // 初始化
这项特性可能导致问题,但可以关闭(以后补上方法)
- 构造函数被用来创建对象,而不能通过对象来调用(在构造函数构造出对象前,对象不存在)
默认构造函数:
——在未提供显示初始值时,用来创建对象的构造函数:
Stock fluffy_the_cat; // use the default constructor
- 没有提供构造函数,C++将自动提供默认构造函数,它不做任何工作
Stock::Stock() {}
类似于未初始化的int x;
- 仅当没有定义任何构造函数时,编译器才提供默认构造函数。为类定义了构造函数后,程序员就必须为它提供默认构造函数才能使用默认构造函数。
- 定义默认构造函数的方式:
- 方式一:给所有参数提供默认值
Stock(cost string & co = "Error", int n = 0, double pr = 0.0); // 定义构造函数时添加参数默认值
- 方式二:函数重载一个无参构造函数
Stock();
- 隐式地调用默认构造函数时,不要使用圆括号
Stock first; // calls default constructor Stock second(); // declare a function
如第二个:变成了返回Stock对象的函数的声明
- 在设计类时,通常应提供对所有类成员做隐式初始化的默认构造函数
- 方式一:给所有参数提供默认值
原文链接:https://www.cnblogs.com/suui90/p/13036623.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ 转换函数搭配友元函数 2020-06-10
- C++ 自动转换和强制类型转换(用户自定义类类型) 2020-06-10
- C++ rand函数 2020-06-10
- C++ 友元函数 2020-06-10
- C++ 运算符重载 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash