小编Mik*_*ebb的帖子

C++删除语句的动态是什么?

这仅仅是出于好奇的缘故,因为我没有使用过new,并delete在C++中,除了最基本的用途.

我知道delete释放记忆.我想知道的是它如何处理更复杂的案件?

例如,如果我有一个这样的用户定义的类:

class MyClass
{
public:
    MyClass();
    ~MyClass()
    {
        delete [] intArray;
    }
    //public members here
private:
    int* intArray;
};
Run Code Online (Sandbox Code Playgroud)

假设类以某种方式为内存分配内存intArray,然后在析构函数中释放它,如果我像这样使用类,那么:MyClass* myClass = new MyClass();稍后发布它delete myclass;

如何delete处理释放所有内存?是否首先调用类析构函数以释放由类(即int* intArray)分配的所有内存,然后释放分配用于保存类的内存?

如果我有这样的课程怎么办?

class MyClass
{
public:
    MyClass();
    ~MyClass()
    {
        delete anotherMyClass;
    }
    //public members here
private:
    MyClass* anotherMyClass;
};
Run Code Online (Sandbox Code Playgroud)

假设anotherMyClass没有使用构造函数分配,这会很快耗尽内存,如果有一个MyClasses链如链接列表那么相互附加怎么办?析构函数中的delete语句是否适用于这种情况?anotherMyClass当析构函数被调用时,每个都会被递归释放吗?

您知道的newdelete陈述是否有任何特定的奇怪技巧或警告?

c++ new-operator delete-operator

4
推荐指数
1
解决办法
410
查看次数

如何在C#中创建公共但不可继承的方法或属性?

这是一个例子.我有两个类,一个继承,并且都有一个具有相同名称但不同参数的函数:

public class MyClass
{
    //public class members

    public MyClass()
    {
        //constructor code
    }

    public void Copy(MyClass classToCopy)
    {
        //copy code
    } 
}

public class InheritedClass : MyClass
{
    //public class members

    public InheritedClass():base()
    {
        //constructor code
    }

    public void Copy(InheritedClass inheritedClassToCopy)
    {
        //copy code
    } 
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何使基类的复制方法(MyClass.Copy)在InheritedClass中不可继承或不可见?我不想这样做:

MyClass a;
InheritedClass b;
b.Copy(a);
Run Code Online (Sandbox Code Playgroud)

这是否有意义,或者我应该保留此功能吗?我甚至可以要求做什么?

c# inheritance abstraction

3
推荐指数
2
解决办法
2178
查看次数

有没有一种简单的方法可以使用默认邮件客户端发送带有附件的电子邮件?

我的问题是我需要使用 C# 将文件附加到默认邮件客户端并将其显示给用户,就像使用mailto:.

我读过这篇关于这个主题的文章,但有几个问题:

  1. 我不想使用,mailto因为附件不受官方支持。
  2. 当使用 System.Net.Mail 和 SMTP 类(接受的答案中提供的代码)时,我不确定如何弹出消息供用户处理,而不仅仅是邮寄它。不确定这是否可能。
  3. 另外,当使用上面的解决方案(#2)时,我不确定如何获取用户的电子邮件服务器。
  4. 在下面提供的答案中,使用 MAPI32.DLL 的自定义包装器提供了代码项目解决方案。这里的问题是,文章作者为此解决方案指定的许可协议与我的项目要求相冲突。
  5. 由于时间限制,我无法编写自己的 MAPI 包装器

那么,有没有其他简单的方法来解决这个问题呢?是否有另一种简单的方法来弹出默认邮件客户端,其中附件预先填充有 .NET?也许是另一种 MAPI 包装器,但许可证非常宽松?

c# mapi email-client email-attachments

3
推荐指数
2
解决办法
1万
查看次数

关于Python中反转列表的问题

我是python的新手,你可以告诉我.

如果我有一个清单:

a = [1,2,3,2,1]
Run Code Online (Sandbox Code Playgroud)

评估结果为true:

a == a[::-1]
Run Code Online (Sandbox Code Playgroud)

...但是评估为false:

a == a.reverse()
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

python list equivalence

3
推荐指数
1
解决办法
124
查看次数

在使用Python的Tk中,如何指定框架或画布以使用我的窗口调整大小?

我对Tk和包装概念都很陌生,所以请耐心等待.这是我的代码:

from Tkinter import *

class frm_main:

    def __init__(self, parent):
        self.frame = Frame(parent, bg="green") #green for testing
        self.frame.pack(fill="both")

        self.canvas = Canvas(self.frame, bg="black", width=1000, height=700)
        self.canvas.pack(fill="both")

root = Tk()
main_frm = frm_main(root)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几种不同的选项和测试,看起来框架和画布都是在x方向上锚定和扩展,但是在y方向上调整大小会留下一堆空白空间.

如何让Frame锚定到窗口的所有边,然后将画布锚定到我框架的所有边?我应该使用Frame吗?

python anchor tkinter packing

3
推荐指数
1
解决办法
1940
查看次数

VB6中的'bang'运算符(!)是否意味着它只是在变量/数字的末尾?如果是这样,这是什么意思?

我正在处理一些VB6代码,经常遇到变量,有时数值以'!'结尾.例如(注意结尾myVar!和第二个'!' 2!:

dist! = Sqr(x ^ 2 + y ^ 2!)
Run Code Online (Sandbox Code Playgroud)

这是我正在处理的代码中的一行.是'!' 在这里有任何意义吗?我会认为它确实如此,因为为什么要使用它,但无法找到有关此特定用途的任何文档.

vb6 operators

3
推荐指数
1
解决办法
679
查看次数

在C#中使用'this()'调用重载方法的正确语法是什么?

我可能有这个错误,但我已经看到了创建一个在定义中调用自身的重载方法的方法.它是这样的:

public void myFunction(int a, int b)
{
    //Some code here
}

public void myFunction(int a) : this (a, 10)
{ }
Run Code Online (Sandbox Code Playgroud)

我知道这不是正确的语法,但由于某种原因我无法在任何地方找到正确的语法.这个的正确语法是什么?

c# syntax overloading

2
推荐指数
2
解决办法
1320
查看次数

如何将C#字符串数组封送到VB6数组?

我有一个使用C#COM DLL的VB6应用程序.在托管C++中,我可以编写如下函数:

array<String^>^ GetAManagedArray()
{
    //Do stuff and return a managed array
}
Run Code Online (Sandbox Code Playgroud)

然后我可以将返回的托管数组分配给VB6中的数组:

Sub MySub()
    Dim strArray() As String
    strArray = myComObject.GetAManagedArray
End Sub
Run Code Online (Sandbox Code Playgroud)

这在C++中工作正常,但在C#中,System.Array对象是抽象的,我似乎无法找到与C++相当的托管array<>^.另外,在C#中只是返回string[]不起作用.

C#中托管数组的等价物是什么?

编辑:这是我对功能的确切代码
C#COM功能:

public string[] OneTwoThree()
{
    return new string[] { "1", "2", "3" };
}
Run Code Online (Sandbox Code Playgroud)

VB6功能:

Private Sub Form_Load()
    Dim test As New ComObjectCSharp
    Dim strArr(), strTemp As String
    strArr = test.OneTwoThree
    strTemp = strArr(0) & " " & strArr(1) & " " & strArr(2)
    MsgBox …
Run Code Online (Sandbox Code Playgroud)

c# vb6 com c++-cli marshalling

2
推荐指数
1
解决办法
2665
查看次数

如何使用CSharp SQLite加速SQL查询?

背景:
我有一个SQLite3数据库,我使用CSharp SQLite来查询数据.我的问题是任何使用JOIN或ORDER BY调用的查询都非常慢(0.1秒使用CSharp-SQLitevs使用orig的0.003秒SQLite).

CSharp SQLite 的最新基准测试表明它最多慢了2倍,这很好,但我的时间要慢30倍.

现在,我已将数据库中的所有必要字段编入索引,并具有相应的主键和外键.另外,原始SQLite运行这些查询很好.

问题:
我必须使用SQLite的托管代码端口,所以我在这里缺少一些东西或者我需要进行的调用CSharp SQLite吗?某处有替代SQLite库端口吗?

c# sqlite performance

2
推荐指数
1
解决办法
1587
查看次数

有没有办法在ASP.NET Web应用程序中按时间表运行代码?

我有一个ASP.NET Web应用程序,可以访问服务器上的数据库.我需要的是一种在给定计划中在后台运行代码的方法,该计划从另一个源自动更新服务器数据库.

我知道如何在Windows应用程序中通过添加计时器,将函数链接到计时器刻度事件和启动计时器来执行此操作.我不知道如何在网络应用程序中执行此操作.

是否存在Web应用程序的启动事件或我可以启动此后台进程的某个地方,无论用户在网站上做了什么?

c# asp.net scheduled-tasks

2
推荐指数
1
解决办法
2614
查看次数