由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 初始化列表问题
相关主题
simple question on C++ initialization list为啥gcc找不到类的构造函数?
请教c++数组初始化构造函数里的异常处理
突然想到一个老题,构造函数n多变量初始化C++构造函数的问题
c++类未完成初始化,如何引用this?问个构造函数的问题
C++的"初始化"小结c++ 不自动initialize变量么?
[c++] 关于构造函数的一个小问题还没被劝退C++的都来看看这个吧
关于构造函数的一道测试题 (转载)刚看完类这一章,有些大小问题,请指教,谢谢
[合集] 关于构造函数谁给总结一个c++变量初始化的规律?
相关话题的讨论汇总
话题: obja话题: int话题: ostream话题: value话题: 初始化
进入Programming版参与讨论
1 (共1页)
k****5
发帖数: 546
1
MemDepResult() : Value(0, 0) {}
Value 里面怎么能有俩个东西?
z****e
发帖数: 2024
2
为什么不可以呢?
注意 class B's initialization list: "_obja(i,j)".
#include
using std::ostream;
class A{
public:
A(int a, int b):_a(a),_b(b){}
int _a;
int _b;
};
class B{
public:
B(int i, int j):_obja(i,j){}//pay attention here
private:
A _obja;
friend ostream& operator<<(ostream& os,const B& b){
os< return os;
}
};
main(){
using namespace std;
B objb(1,2);
cout< }
k****5
发帖数: 546
3
呵呵,懂了,谢谢
z****e
发帖数: 2024
4
这个问题后来我又仔细看了一下,没有100%把握理解对了,
这里的几个头牌大侠给解释解释吧。thrust 大侠,Xentar 大侠,等大侠们,菜鸟我呼
唤你们的醍醐灌顶。
谢过了先。
X****r
发帖数: 3557
5
你只是引了一段没有解释的代码,没看出来你的理解是什么,我也说不上来你的理解
对不对。
类的构建函数里可以初始化它的基类或是成员,比如:
class D : B {
A a;
D() : B(1,2), a(3,4,5) {}
}
那么D::D()运行的时候,在进入{}里的代码前,先调用B::B(1,2)来初始化D里的B
子对象,再调用A::A(3,4,5)来初始化D里的a成员。这些基类或者成员相应的构造函
数有多少个参数自然这个初始化列表里就有多少个参数。对于不是类的成员,它们的
“构造函数”就是赋初值,只有一个参数。

【在 z****e 的大作中提到】
: 这个问题后来我又仔细看了一下,没有100%把握理解对了,
: 这里的几个头牌大侠给解释解释吧。thrust 大侠,Xentar 大侠,等大侠们,菜鸟我呼
: 唤你们的醍醐灌顶。
: 谢过了先。

z****e
发帖数: 2024
6
那个代码是我自己测试写的,
现在我改成这个:
class B{
public:
B(int i, int j, A a):_obja(a){}//pay attention here
private:
A _obja;
friend ostream& operator<<(ostream& os,const B& b){
os< return os;
}
};
也行。
是不是说 initialization list 的参数可以是成员的构造函数形式,也可以是拷贝构
造函数?就是两种构造函数都能用在初始化列表里面?

【在 X****r 的大作中提到】
: 你只是引了一段没有解释的代码,没看出来你的理解是什么,我也说不上来你的理解
: 对不对。
: 类的构建函数里可以初始化它的基类或是成员,比如:
: class D : B {
: A a;
: D() : B(1,2), a(3,4,5) {}
: }
: 那么D::D()运行的时候,在进入{}里的代码前,先调用B::B(1,2)来初始化D里的B
: 子对象,再调用A::A(3,4,5)来初始化D里的a成员。这些基类或者成员相应的构造函
: 数有多少个参数自然这个初始化列表里就有多少个参数。对于不是类的成员,它们的

X****r
发帖数: 3557
7
任何构造函数都可以,包括copy constructor。
如果你在代码中可以写
A a(一坨参数);
那么对于B的成员a就可以写B::B():a(一坨参数) {}
当然,这个也一样要受access control的限制。

【在 z****e 的大作中提到】
: 那个代码是我自己测试写的,
: 现在我改成这个:
: class B{
: public:
: B(int i, int j, A a):_obja(a){}//pay attention here
: private:
: A _obja;
: friend ostream& operator<<(ostream& os,const B& b){
: os<: return os;

z****e
发帖数: 2024
8
我这里早谢了。

【在 X****r 的大作中提到】
: 任何构造函数都可以,包括copy constructor。
: 如果你在代码中可以写
: A a(一坨参数);
: 那么对于B的成员a就可以写B::B():a(一坨参数) {}
: 当然,这个也一样要受access control的限制。

1 (共1页)
进入Programming版参与讨论
相关主题
谁给总结一个c++变量初始化的规律?C++的"初始化"小结
再问C++初始化问题。[c++] 关于构造函数的一个小问题
static vector 怎么 initialize ?关于构造函数的一道测试题 (转载)
static variable存在heap还是stack?[合集] 关于构造函数
simple question on C++ initialization list为啥gcc找不到类的构造函数?
请教c++数组初始化构造函数里的异常处理
突然想到一个老题,构造函数n多变量初始化C++构造函数的问题
c++类未完成初始化,如何引用this?问个构造函数的问题
相关话题的讨论汇总
话题: obja话题: int话题: ostream话题: value话题: 初始化