与默认构造函数有关,CMFCPropertyGridProperty的派生类构造函数怎么写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了与默认构造函数有关,CMFCPropertyGridProperty的派生类构造函数怎么写相关的知识,希望对你有一定的参考价值。

我想从CMFCPropertyGridProperty派生出一个子类,但是子类的构造函数该怎么写呢? 我的写法: CObjProperties::CObjProperties(const CString& strName, const COleVariant& varValue, LPCTSTR lpszDescr, DWORD_PTR dwData, LPCTSTR lpszEditMask, LPCTSTR lpszEditTemplate, LPCTSTR lpszValidChars) :MyOwnProperty( strName, varValue,lpszDescr, dwData,lpszEditMask, lpszEditTemplate, lpszValidChars CObjProperties::CObjProperties(const CString& strGroupName, DWORD_PTR dwData, BOOL bIsValueList) : MyOwnProperty(strGroupName, dwData, bIsValueList) 但是这样编译器提示CMFCPropertyGridProperty没有默认的构造函数,我该怎么办呢

参考技术A 你好!
子类从基类继承,如果子类构造时不显示调用基类的构造函数,那么系统会使用基类的默认构造函数,但是因为你没有提供默认的构造函数,所以报错了!
你可以在构造函数的参数列表中再加入基类的构造函数调用,或者给基类提供一个默认的构造函数。
打字不易,采纳哦!
参考技术B 是这样的派生类
调用基类的默认构造函数
//找不到的错误
如果你类里写了一个构造函数,编译器就不提供默认构造函数了
你要再自己写个默认构造函数就行了
默认构造函数就是无参数的构造函数
就懂的?

JAVA笔试题(与构造函数、静态变量有关)

1.
class Base
int i=99;
public void amethod()

System.out.println("Base.amethod()");

Base()

amethod();


public class Derived extends Base
int i=-1;
public static void main(String[] args)
Base b=new Derived();
System.out.println(b.i);
b.amethod();

public void amethod()

System.out.println("Derived.amethod()");


这段代码运行结果如下。
Derived.amethod()
99
Derived.amethod()
请问一下,为什么不是Base.amethod()呢?
2.
class MyClass
03. static String myName="Webs-TV";
04.
05. MyClass getMyClass()
06. System.out.println(myName);
07. return null;
08.
09. public static void main(String[] args)
10. System.out.println(new MyClass().getMyClass().myName);
11.
12.
A.Compiler time error
B.runtime error
C.Print "Webs-TV" twice
D.Print "Webs-TV" once
运行结果是C,请问一下这是为什么,帮忙解释一下。谢谢啦:)

关于多态网上归纳是这样的
一、使用父类类型的引用指向子类的对象;

二、该引用只能调用父类中定义的方法和变量;

三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用)

四、变量不能被重写(覆盖),”重写“的概念只针对方法。

因为父类的方法已经被子类重写了 所以调用的将是子类的方法啦。

2. 因为myName 是个静态变量 static在不用实例化对象的情况下也能调用 jre会无视你函数返回值等 就看你那个静态变量的值 所以打印两次~
参考技术A 第一题是因为Derived继承Base,子类方法名与父类方法名相同,构成重写,子类就会覆盖父类。
第二题第一遍输出是因为getmyclass.第二遍是因为myname输出。
参考技术B 1.amethod()方法被重写
2.getMyClass()中输出一次,main()中再输出一次追问

嗯,重写我知道。就是说,因为new的是子类,所以就调用子类的方法,对吧?
我没有明白的是return null后,为什么null.myName也能输出"Webs-TV"。
这些笔试题,做得蛮晕的,呵呵。

追答

String myName是被static修饰的,表示这是一个静态变量,即使对象为null,它的值依然不会改变,所以能够输出

参考技术C 这是多态,因为new的是子类,所以调用就是子类 参考技术D 为什么是99不是-1啊?

以上是关于与默认构造函数有关,CMFCPropertyGridProperty的派生类构造函数怎么写的主要内容,如果未能解决你的问题,请参考以下文章

JAVA笔试题(与构造函数、静态变量有关)

JAVA笔试题(与构造函数、静态变量有关)

什么是默认构造函数头[重复]

试图创建一个线程来向套接字发送消息。遇到与线程构造函数有关的 2 个错误

C++中,一个类,究竟有多少隐藏的默认函数?

C++的默认构造函数与构造函数