64,684
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
class Obj {
public:
Obj(int k) :
j(k), i(j) {
}
void print(void){
cout<<i<<endl<<j<<endl;
}
private:
int i;
int j;
};
int main(int argc,char *argv[]) {
Obj obj(2);
obj.print();
return 0;
}
Obj(int k) :j(k), i(j) //这个到底是什么意思?thanks
//其实对于int型来说,参数列表和直接写没有区别
//当k接受一个对象或其引用时,这时候写成阐述列表,编译器可以更好的优化代码,减少不必要的临时变量的产生
//
Obj(string str):s(str)
//你调用Obj("hi"),这个临时变量"hi"就不必存在了
//当然这些在现代编译器下变得不那么重要,你不这样写也可以做优化
//上面那个"hi"是右值,被优化很正常
private:
int j;
int i;