标签: static

实现静态类继承的最佳实践?(单例)

来自 PHP 手册:

[...] 静态方法调用在编译时解析。当使用显式类名时,该方法已被完全标识,并且不适用继承规则。如果调用是由 self 完成的,则 self 会被转换为当前类,即代码所属的类。这里也没有继承规则适用[...]

..所以我正在寻找一种使用静态单例模拟标准oop 继承方法。

代码解释得更好:

// Normal inheritance: my goal.
class Foo{
    public function test(){
        echo "Foo->test()\n";
    }
}

class Bar extends Foo{
    public function other_test()
    {
        echo "Bar->other_test()\n";
    }
}


$obj = new Bar();
echo get_class($obj) . "\n";
$obj->test();
$obj->other_test();
/*
 Output:
Bar
Foo->test()
Bar->other_test()
*/


// How i would love to do:
class Foo2{
    public static function test2()
    {
        echo "Foo2::test2()\n";
    }

    // Singleton?
    public static $_instance; …
Run Code Online (Sandbox Code Playgroud)

php oop singleton static design-patterns

-1
推荐指数
1
解决办法
1875
查看次数

按下按钮时如何调用静态方法?

目前,我已经把这一切都列出来了:

public static string Encrypt<T>(string anything)
{
 //Stuff can go here
}
Run Code Online (Sandbox Code Playgroud)

当我按下按钮时,我希望能够在 Encrypt 中运行所有代码。是否可以这样做,如果可以,我该怎么做?

c# string static

-1
推荐指数
1
解决办法
1745
查看次数

c++ - 如何在构造函数c ++中初始化多个const变量?

标题:

#ifndef EMPLOYEE_H_
#define EMPLOYEE_H_
#include "Date.h"
#include "String.h"

class Employee {
private:
    String firstname;
    String lastName;
    const Date birth;
    const int id;
    const Date start;
    double salary;
    int status;
public:
    Employee();
Employee(char* firstname,char* lastname,Date birth,int id,Date start,double salary,int status);
virtual ~Employee();
};
Run Code Online (Sandbox Code Playgroud)

中央人民政府:

#include "Employee.h"
#include "Date.h"
#include "String.h"


Employee::Employee() :id( 0 ) {
    salary=0;
    status=0;
}
Employee::Employee(char* firstname,char* lastname,Date birth,int Id,Date start,double   salary,int status){
}

Employee::~Employee() {

}
#endif /* EMPLOYEE_H_ */
Run Code Online (Sandbox Code Playgroud)

如何初始化构造函数中的所有const变量??(我不能用很少的文字发帖……忽略这个 bal bla bla bla bla …

c++ variables static constructor

-1
推荐指数
1
解决办法
339
查看次数

同一类中的Java静态和非静态变量

我需要一些帮助来澄清静态和非静态变量。我的理解是静态变量在类的所有实例中具有相同的值。但是,假设我在同一个类中混合了静态和非静态变量。当我引用一个静态变量时,无论使用哪个实例,我都会得到相同的值?然而,当我引用一个非静态变量时,我将获得与该特定类关联的值?这似乎是一个内存管理噩梦。这真的是它的工作原理以及静态内存是如何处理的吗?是否在每个实例中创建了变量的多个副本,然后以某种方式同步,或者是在每个实例中创建的地址引用?在同一个类中混合使用静态和非静态变量是否有任何陷阱?TIA。

java variables static non-static

-1
推荐指数
1
解决办法
4660
查看次数

为什么在代码下运行时会出现stackoverflow错误?

你能否告诉我为什么下面的代码抛出堆栈溢出错误?

 class Program
    {
        static void Main()
        {
            Program.Main();
        }
    }
Run Code Online (Sandbox Code Playgroud)

为什么调用Main()方法会导致填充堆栈内存并最终导致堆栈溢出错误?当我像这样运行无限循环时,这种情况永远不会发生

class Program
    {
        static void Main()
        {
            // Program.Main();
            bool abcd = true;
            while (abcd)
                Console.WriteLine("Running");
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果这与某个类的静态成员的内存管理或与之相关的内容有关,请告诉我.我在互联网上寻找答案但找不到合适的答案.

.net c# stack-overflow static

-1
推荐指数
1
解决办法
168
查看次数

默认情况下,接口不是公开的吗?

我记得默认情况下该接口是公共的。我错了吗?当我尝试从接口实现“公共静态”方法时。VS告诉我,该接口中的方法比“公共静态”方法更难访问。当我将public添加到接口时,它已修复。默认情况下,接口不是公开的吗?

interface IDoubleFloatEventInvoker {
 void AddListener(EventName eventName, UnityAction<float, float> unityAction);
}

public static void AddInvoker(EventName eventName, IDoubleFloatEventInvoker invoker)
{
    foreach (UnityAction<float, float> listener in doubleFloatListeners[eventName])
    {
        invoker.AddListener(eventName, listener);
    }
    doubleFloatInvokers[eventName].Add(invoker);
}
Run Code Online (Sandbox Code Playgroud)

“ VS说IDoubleFloatEventInvoker比AddInvoker函数更难访问”

c# static interface access-modifiers

-1
推荐指数
1
解决办法
50
查看次数

无法理解头文件中的静态(内联)

我已经使用静态很长时间了,但是现在当头文件出现时我有点困惑。

主要问题是这段代码:

#include <iostream>
#include <string>
#include <sstream>
#include <set>
#ifndef WORD_H
#define WORD_H

#include<unordered_map>

class Word
{
private:
    std::string word;
    int k;

    static std::unordered_map<std::string, int> x;
public:

    Word(std::string word) : word(word)
    {
        if (x.find(word) != x.end())
            x.insert({ word , 0 });
        else
        {
            x[word]++;
        }
    }

    std::string getWord() const
    {
        return x.find(this->word)->first;
    }

    int getCount() const
    {
        return x.find(this->word)->second;
    }
    friend bool operator<(const Word& a, const Word& b);
};

bool operator<(const Word& a, const Word& b)
{
    return a.getWord() …
Run Code Online (Sandbox Code Playgroud)

c++ static

-1
推荐指数
1
解决办法
60
查看次数

如果您要求一个整数并且用户输入“b”,您在 C++ 中会做什么?

我是静态类型 C++ 的新手。在 JavaScript 中,我可以先检查数据类型,但这似乎非常复杂,而且答案似乎都暗示您没有“了解”该语言。

这是我用来测试 rand() 的代码,在那里我遇到了将字符串转换为整数的问题:

int main(){
std::string input;
    cout <<endl<< "What to do?"<<endl;
    cin >> input;
    if (input == "rand")
    {
        cout << "what is the max?" << endl;
        cin >> input;
        int number;
        if (stoi(input) > 1) {
            number = stoi(input);
        }
        else {
            number = 10;
            cout << "using 10"<<endl;
        }
        cout << rand() % stoi(input);
        return main();
    }
}
Run Code Online (Sandbox Code Playgroud)

所以在 Javascript 中,我只会检查输入或结果的类型,但是人们在 C++ 中做什么?

不允许在评论中说谢谢,所以我在这里说谢谢!

c++ string static input

-1
推荐指数
1
解决办法
111
查看次数

非标准语法问题

我正在尝试学习 C++,当我尝试运行我正在创建的这个简单程序时,出现以下错误。

Error   C3867   'budget::check_mort': non-standard syntax; use '&' to create a pointer to member
Error   C3867   'budget::check_car': non-standard syntax; use '&' to create a pointer to member
Error   C3867   'budget::check_groc': non-standard syntax; use '&' to create a pointer to member
Error   C3867   'budget::check_util': non-standard syntax; use '&' to create a pointer to member
Run Code Online (Sandbox Code Playgroud)

我不太确定从这里该去哪里。搜索问题似乎表明需要将某些东西设为静态或常量,但我不太确定。任何帮助将非常感激。

使用 Visual Studio 社区和 Windows 10 文件如下:

.h 文件

#pragma once
#include <iostream>
#include <string>
#include <ostream>
#include <list>
#include <algorithm>
#include <numeric>
#include <windows.h> …
Run Code Online (Sandbox Code Playgroud)

c++ syntax static pointers constants

-1
推荐指数
1
解决办法
40
查看次数

C# 静态成员是否在对网站的调用之间共享?

我正在使用 C#/Asp.net 创建一个网站。我想通过将一些类和属性设置为静态来最小化对象创建。但我不希望后续调用 Web 服务器时重用这些对象。我希望在处理请求后立即处理静态对象。如果在处理过程中出现新请求,我不希望新请求看到前一个请求的静态类和属性中的数据。那么,我应该使用静态吗?

c# asp.net static web

-1
推荐指数
1
解决办法
61
查看次数