初始化列表和赋值的区别.
来源:互联网 发布:海南宇萱网络 编辑:程序博客网 时间:2024/05/17 04:27
(1) 区别“赋值” 和 “初始化”这两个概念:
- 我们知道普通变量编译器都会默认的替你初始化。他们既能初始化,也能被赋值的,而常量(const)按照其意思只能被初始化,不能赋值。否则与变量就无区别了。所以常量成员(const member)只能用成员初始化列表来完成他们的“初始化”,而不能在构造函数内为他们“赋值”。
- 我们知道类的对象的初始化其实就是调用他的构造函数完成,如果没有写构造函数,编译器会为你默认生成一个。如果你自定义了带参数的构造函数,那么编译器将不生成默认构造函数。这样这个类的对象的初始化必须有参数。如果这样的类的对象来做另外某个类的成员,那么为了初始化这个成员,你必须为这个类的对象的构造函数传递一个参数。同样,如果你在包含它的这个类的构造函数里用“=”,其实是为这个对象“赋值”而非“初始化”它。所以一个类里的所有构造函数都是有参数的,那么这样的类如果做为别的类的成员变量,你必须显式的初始化它,你也是只能通过成员初始化列表来完成初始化。例如:
(2)在继承里面,只有初始化列表可以构造父类的private成员。比如说
class child : public foo{
}
foo里面的构造函数是这样写的:foo (int x) { a = x; }.
而在child里面写child(int x){ foo(x); }是通过不了编译的。只有把父类初始化改为foo(int x) : a(x){}而子类构造写作child (int x) : foo(x){}才可以。
- 初始化列表和赋值的区别.
- 初始化列表和赋值的区别.
- 构造函数初始化列表和函数内部赋值的区别
- 构造函数初始化列表和赋值的区别
- 初始化和赋值的区别
- 初始化和赋值的区别
- 初始化和赋值的区别
- 初始化和赋值的区别
- 初始化和赋值的区别
- 初始化和赋值的区别
- 浅析C++中的初始化列表(区别赋值和初始化)
- 浅析C++中的初始化列表(区别赋值和初始化)
- 浅析C++中的初始化列表(区别赋值和初始化)
- C/C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别
- C/C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别
- C/C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别
- C/C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别
- C/C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别
- c++文件操作 demo
- jsp cookie 漫谈
- mysql中文排序
- DllMain详解
- DataScraper数据抓取快速入门
- 初始化列表和赋值的区别.
- mysql中 text和blob字段类型比较区别
- SOJ1686 Happy Children's Day 线段树
- Mysql修改字段
- 关于高清的那些事
- MYSQL中删除重复记录的方法
- mysql查询今天、昨天、7天、近30天、本月、上一月 数据
- 数据结构之trie树
- 范式与反范式的应用