C编程基础问题,困惑啊
CCtrlDebuggerApp::CCtrlDebuggerApp(){//TODO:addconstructioncodehere,//Placeallsignifi...
CCtrlDebuggerApp::CCtrlDebuggerApp() {
// TODO: add construction code here,
// Place all significant
}
这个语句怎么理解?CCtrlDebuggerApp::CCtrlDebuggerApp()这个是什么用法?应该先了解哪一方面的知识?? 展开
// TODO: add construction code here,
// Place all significant
}
这个语句怎么理解?CCtrlDebuggerApp::CCtrlDebuggerApp()这个是什么用法?应该先了解哪一方面的知识?? 展开
3个回答
展开全部
这个是C++,不是C。
是默认构造函数。
默认构造函数(default constructor)就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者为所有的形参提供默认实参的构造函数定义。如果定义某个类的变量时没有提供初始化式就会使用默认构造函数。
如果用户定义的类中没有显式的定义任何构造函数,编译器就会自动为该类型生成默认构造函数,称为合成的构造函数(synthesized default constructor)。
如果类包含内置或复合类型的成员,则该类就不应该依赖于合成的默认构造函数,它应该定义自己的构造函数来初始化这些成员。
多数情况下,编译器为类生成一个公有的默认构造函数,只有下面两种情况例外:
1.一个类显式地声明了任何构造函数,编译器不生成公有的默认构造函数。这这种情况下,如果程序需要一个默认构造函数,需要由类的设计者提供。
2.一个类声明了一个非公有的默认构造函数,编译器不会生成公有的默认构造函数。
C++编译器必须为未声明构造函数之class合成一个默认构造函数
第一,class 有member object(该member object有default constructor), class需要default constructor调用member object default constructor
第二,如果一个没有任何constructor的class 派生自一个"带有default constructor"的base class.那么它的default constructor会被合成出来。
第三,如果一个class申明了virtual function,,如果该类没有任何constructor,
编译器也会为它加default constructor.
(如果用户有constructor,编译器会在他的constructor中添加一些code,用来初始化vptr)
第四,一个class(没有申明任何constructor)派生自一个继承串链,其中有一个
或多个virtual base classes,编译器也会合成出一个default constructor,在其中放入每一个virtual
base class的执行期存取操作的的码,
(如果用户申明了constructors,编译器会在constructor中安插virtual base class执行期存取操作的的码)
上面四种分析合成出的default constructor都是nontrivial default constructors,
不在此情况之内的都trivial default constructors,它们实际上并不会被编译器合成出来
在合成的default constructors,只有base class subobjects和member class object会
被初始化,所有其它的nonstatic data member,如整数、整数指针、整数数组等等都不会被编译器初始化
是默认构造函数。
默认构造函数(default constructor)就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者为所有的形参提供默认实参的构造函数定义。如果定义某个类的变量时没有提供初始化式就会使用默认构造函数。
如果用户定义的类中没有显式的定义任何构造函数,编译器就会自动为该类型生成默认构造函数,称为合成的构造函数(synthesized default constructor)。
如果类包含内置或复合类型的成员,则该类就不应该依赖于合成的默认构造函数,它应该定义自己的构造函数来初始化这些成员。
多数情况下,编译器为类生成一个公有的默认构造函数,只有下面两种情况例外:
1.一个类显式地声明了任何构造函数,编译器不生成公有的默认构造函数。这这种情况下,如果程序需要一个默认构造函数,需要由类的设计者提供。
2.一个类声明了一个非公有的默认构造函数,编译器不会生成公有的默认构造函数。
C++编译器必须为未声明构造函数之class合成一个默认构造函数
第一,class 有member object(该member object有default constructor), class需要default constructor调用member object default constructor
第二,如果一个没有任何constructor的class 派生自一个"带有default constructor"的base class.那么它的default constructor会被合成出来。
第三,如果一个class申明了virtual function,,如果该类没有任何constructor,
编译器也会为它加default constructor.
(如果用户有constructor,编译器会在他的constructor中添加一些code,用来初始化vptr)
第四,一个class(没有申明任何constructor)派生自一个继承串链,其中有一个
或多个virtual base classes,编译器也会合成出一个default constructor,在其中放入每一个virtual
base class的执行期存取操作的的码,
(如果用户申明了constructors,编译器会在constructor中安插virtual base class执行期存取操作的的码)
上面四种分析合成出的default constructor都是nontrivial default constructors,
不在此情况之内的都trivial default constructors,它们实际上并不会被编译器合成出来
在合成的default constructors,只有base class subobjects和member class object会
被初始化,所有其它的nonstatic data member,如整数、整数指针、整数数组等等都不会被编译器初始化
展开全部
此为构造函数的一种构造方法,前面CCtrlDebuggerApp为类名,后面的为构造函数名,中间的“:”为作用于解析符,此种方法常用于构造函数写于类的外面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这明显是C++的,你要先了解C++的类才明白这是什么意思
CCtrlDebuggerApp::CCtrlDebuggerApp()
表示 CCtrlDebuggerApp 类里面的构造函数 CCtrlDebuggerApp()
上面的代码是定义类的成员函数
CCtrlDebuggerApp::CCtrlDebuggerApp()
表示 CCtrlDebuggerApp 类里面的构造函数 CCtrlDebuggerApp()
上面的代码是定义类的成员函数
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询