小编Ami*_*Ray的帖子

为什么Traits不能直接实例化?

在测试PHP中的特征时,我有点困惑为什么要引入特征.我做了一些小实验.首先,我直接在一个类中调用trait方法

<?php

trait HelloWorld {
    public function sayHello() {
        echo 'Hello World!';
    }
}

class TheWorldIsNotEnough {
    use HelloWorld;
    public function sayHellos() {
        $o = new HelloWorld();
        $o->sayHello();
    }
}

$o = new TheWorldIsNotEnough();
$o->sayHellos();

?>
Run Code Online (Sandbox Code Playgroud)

我收到了一个错误

Fatal error: Cannot instantiate trait HelloWorld in C:\xampp\htdocs\test.php on line 35
Run Code Online (Sandbox Code Playgroud)

但是当我这样做的时候

<?php

trait HelloWorld {
    public function sayHello() {
        echo 'Hello World!';
    }
}
class MyHelloWorld {
    use HelloWorld;
}
class TheWorldIsNotEnough {
    use HelloWorld;
    public function sayHellos() {
        $o = new …
Run Code Online (Sandbox Code Playgroud)

php class traits abstract php-5.4

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

C中的指针算术同时等于两个指针

请注意,我已经在 stackoverflow 中解决了几个与指针相关的问题,但我无法得到我将要问的类似问题。可能这个问题已经存在,我不知道要搜索的适当标签。这是我对 C 编程的怀疑。

第一期节目

#include <stdio.h>
    #include <stdlib.h>
    int main(void) {
        int i,j;
        int **p = (int **)malloc(2 * sizeof(int *));
        p[0] = (int *)malloc(2 * sizeof(int));
        p[1] = p[0];
        for(i = 0; i < 2; i++)
            for(j = 0; j < 2; j++)
                p[i][j] = i + j;
        printf("%d",p[0][0]);
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

输出为 1

第二个程序

第 7 行更改为

p[1] = (int *)malloc(2 * sizeof(int));
Run Code Online (Sandbox Code Playgroud)

输出为0;

这两个程序看起来几乎相似,但它们给出了不同的结果。我只是无法理解下面发生了什么。任何人都可以请帮忙。

c

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

标签 统计

abstract ×1

c ×1

class ×1

php ×1

php-5.4 ×1

traits ×1