构造函数后的冒号后的问题 CDerived(int a,int b):CBase(b){}; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CDerived(int a,int b):CBase(b);这是初始化列表调用父类构造函数初始化b,b一般是从父类继承过来的CDerived(int a,int b):x(b);这是在初始化列表初始化当前类成员,这样有问题吗??初始化列表没见过吗??任何一本C++语法的书讲继承的地方都有讲 同意楼上的对于变量初始化(第二种情况),在非必要时,我建议不要使用这种方法来初始化变量,毕竟对理解会造成一定的困难,没必要为了表现自己很Nx就要这样写,下列的写法清楚,人人都容易理解:CDerived(int b)//这是在装逼还是真的有用处?反正我在书上是没见过这种写法. { x = b; } 但如果是要初始化类中的const成员,则只有楼主说的那样了:CDerived(int b):x(b)//这是在装逼还是真的有用处?反正我在书上是没见过这种写法. { } // 这里的x是类的一个const成员实际上,在类中声音为const的成员,在编译时,并不是总能通过的,在使用这些const成员时,编译器有时不认为它是一个const成员 class CDerived:public CBase { public: int x; CDerived(int a,int b):x(b);//这样写?我把书翻了N遍,也没见有这种写法呀.什么原理呢?我还经常看到有的人定义一个空构造函数都加个x(b),如下: CDerived(int b):x(b)//这是在装逼还是真的有用处?反正我在书上是没见过这种写法. { } } 我今天开眼了。我也是第1次见这样的构造初始化.CDerived(int a,int b):CBase(b){x=b;}我觉得这样才好,程序给人家读的。并不是自己读明白就ok了。弄的全天下就自己看明白自己的程序,没有什么好处.坏处到是不少 构造函数中的变量初始化都看不懂,还好意思说读明白?建议好好学学C++基础,要深入一些看看《Effective C++》。 同意x(b) 只调用拷贝构造函数x=b 调用构造函数,赋值操作符 这种方式很常见吧,这不就是初始化成员列表的方式赋初值吗,在纯c++程序里给const成员变量赋值就必须采用这种方式,而且这在MFC程序里很常见的 这样写法不好??我很怀疑你有没有看完一本C++最初级的书这只能算是赋值,严格来说不能叫初始化CDerived(int a,int b):CBase(b){x=b;}这是初始化,实际上比上面那种写法好,效率高CDerived(int a,int b):x(b); 也不是任何一本讲C++的书都讲了,反正我大学教材上是没讲,<<C++宝典>>上也没看到,后来在<<C++ primer>>上才看到介绍.不理解不要紧,能问就好,<<C++ primer>>是程序员必备呀. 小弟刚刚接触MFC 但是对于c++还是比较熟悉的。这个写法很正常 是在用初始化列表初始化数据成员。 很正常的。MFC里面常见与否我不知道。通常用于初始化 CONST成员。 VC6.0和VS2005里如何调试程序 求 Windows WDM 设备驱动程序开发指南 随书代码 怎么让对话框在制定的位置显示? 请问---------------------------------------- 关于窗口重画问题????在线 如何在文件中从末尾查找字符串,返回第一次找到的位置???在线!!!!!!!!!! MFC对话框变量映射问题 帮我解决一个简单的问题,150分相送!!! 用什么格式存储简单的灰度图片好 适合于VC初学者的书 modem的line口和phone口 vc加载多个位图
CDerived(int a,int b):x(b);这是在初始化列表初始化当前类成员,
这样有问题吗??初始化列表没见过吗??任何一本C++语法的书讲继承的地方都有讲
对于变量初始化(第二种情况),在非必要时,我建议不要使用这种方法来初始化变量,毕竟对理解会造成一定的困难,没必要为了表现自己很Nx就要这样写,下列的写法清楚,人人都容易理解:
CDerived(int b)//这是在装逼还是真的有用处?反正我在书上是没见过这种写法.
{
x = b;
} 但如果是要初始化类中的const成员,则只有楼主说的那样了:
CDerived(int b):x(b)//这是在装逼还是真的有用处?反正我在书上是没见过这种写法.
{
} // 这里的x是类的一个const成员实际上,在类中声音为const的成员,在编译时,并不是总能通过的,在使用这些const成员时,编译器有时不认为它是一个const成员
{
public:
int x;
CDerived(int a,int b):x(b);//这样写?我把书翻了N遍,也没见有这种写法呀.什么原理呢?我还经常看到有的人定义一个空构造函数都加个x(b),如下: CDerived(int b):x(b)//这是在装逼还是真的有用处?反正我在书上是没见过这种写法.
{ } }
我今天开眼了。我也是第1次见这样的构造初始化.CDerived(int a,int b):CBase(b)
{
x=b;
}我觉得这样才好,程序给人家读的。并不是自己读明白就ok了。弄的全天下就自己看明白自己的程序,没有什么好处.坏处到是不少
同意
x(b) 只调用拷贝构造函数
x=b 调用构造函数,赋值操作符
CDerived(int a,int b):CBase(b)
{
x=b;
}这是初始化,实际上比上面那种写法好,效率高
CDerived(int a,int b):x(b);
也不是任何一本讲C++的书都讲了,反正我大学教材上是没讲,<<C++宝典>>上也没看到,后来在<<C++ primer>>上才看到介绍.不理解不要紧,能问就好,<<C++ primer>>是程序员必备呀.