首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

子类赋值赋值兼容

C++ 中,类型的匹配检测是非常严格的,但是你会发现一个现象,如果一个继承了另外一个,把子类的对象赋值给父的时候,系统不但不提示错误,而且程序还能顺利的编译通过并运行。...这其实就是 C++ 内部提供的赋值兼容的过程,但是要注意,如果子类数据成员比父多,则会出现数据截断。...“; cout << “start (“ << _x << “,” << _y << “)” << endl; } protected: int _x; int _y; }; // 继承 Shape ...Shape s(3, 5); s.draw(); // 实例化一个子类对象 Circle c(1, 2, 4); c.draw(); cout << “————————“ << endl; // 子类对象给父变量赋值...,普通赋值兼容,会出现数据截断 s = c; s.draw(); return 0; }

18330
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PHP静态(static)方法和静态(static)变量使用介绍

    php中,访问的方法/变量有两种方法: 1. 创建对象object = new Class(),然后使用”->”调用: 2....直接调用方法/变量:class::attribute/function,无论是静态/非静态都可以。但是有前提条件: A. 如果是变量,需要该变量可访问。 B....如果是方法,除了该方法可访问外,还需要满足: b1) 如果是静态方法,没有特殊条件; b2) 如果是非静态方法,需要该方法中没有使用$this,即没有调用非静态的变量/方法,当然,调用静态的变量/方法没有问题...静态变量 静态成员只保留一个变量值,而这个变量值对所有的实例都是有效,也就是说,所有的实例共享这个成员。 2....静态方法 静态方法可以直接使用class::… 来调用,而非静态方法需要满足一定限制条件才能使用class::.. 的方法调用,如之前所述

    4.2K10

    PHP的变量赋值

    PHP的变量赋值 这个标题估计很多人会不屑一顾,变量赋值?excuse me?我们学开发的第一课就会了好不好。但是,就是这样基础的东西,反而会让很多人蒙圈,比如,值和引用的关系。...然后,变量给变量赋值。 1$a1 = $a; 2$b1 = $b; 3$c1 = $c; 4$d1 = $d; 请注意,前三个的赋值都是正常的赋值,也就是对具体内容的拷贝。...用具体的例子来说明,首先是普通值的赋值: 1// 普通赋值 2$v = '1'; 3$c = $v; 4$c = '2'; 5echo $v, PHP_EOL; // '1' 6 7//...那么对象形式的引用赋值呢?...1// 引用赋值 2$b = &$v; 3$b = '3'; 4echo $v, PHP_EOL; 今天我们更深入的学习和了解了一下PHP中的赋值问题,特别是普通赋值和引用赋值的问题。

    3.4K30

    php学习之类与对象的静态属性

    静态变量定义 静态变量是当前的所有对象共享的变量,任何一个该类的对象去访问它时,取得的都是相同的值,同样任何一个该类的对象去修改它时,也时同样被修改 定义静态变量 访问修饰符 static 静态属性名...; static 访问修饰符 静态属性名; 两种方式都可以 访问静态变量 在的内部访问:有两种方式 self::静态属性名; 名::$静态属性名; ?...-> self是的范畴指向,$this是对象实例,指向对象实例 静态变量的使用注意事项 如果在的内部去使用静态变量,有两种形式,self::$静态变量,   名::$静态变量, 静态属性可以是public...、protected、private 在的外部访问静态属性时 只能是名::$静态属性名,要求是public 静态变量可以在定义时,直接初始化,普通的成员属性也可以 需求: 玩游戏时,当有人加入游戏时加一...php //玩游戏时,当有人加入游戏时加一,最后统计有多少人加入游戏 class Game{ public $name ; public static $num = 0; public function

    64200

    PHP与对象后期静态绑定操作实例详解

    本文实例讲述了PHP与对象后期静态绑定操作。分享给大家供大家参考,具体如下: 做项目是后期静态绑定非常有用。比如service层单例模式,使用后期静态绑定就非常好实现。...自 PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的。...准确说,后期静态绑定工作原理是存储了在上一个“非转发调用”(non-forwarding call)的名。...当进行静态方法调用时,该类名即为明确指定的那个(通常在 :: 运算符左侧部分);当进行非静态方法调用时,即为该对象所属的。...以上例程会输出: B Note: 在非静态环境下,所调用的即为该对象实例所属的。由于 $this- 会在同一作用范围内尝试调用私有方法,而 static:: 则可能给出不同结果。

    42451

    php学习之类与对象的静态方法

    php //静态方法 class Person{ public $name; private static $age=18; //静态方法来操作静态属性 public static function...静态方法注意事项 在的外部调用静态方法:名::静态方法名,或者对象名->静态方法名或者对象名::静态方法名,后面两种不推荐使用 在的内部调用静态方法:self::静态方法名  或者名::静态方法名...php //静态方法 class Person{ public $name; private static $age=18; //构造方法 public function __construct($...php //编写一个操作数据库的工具,要求只能创建一个对象 class DaoMysql{ //定义需要的属性 //连接数据库 private $mysql_link; //定义一个静态属性,用来的对象实例...php //编写一个操作数据库的工具,要求只能创建一个对象 class DaoMysql{ //定义需要的属性 //连接数据库 private $mysql_link; //定义一个静态属性,用来的对象实例

    61900

    PHP 静态属性和静态方法

    1、基本使用 前面介绍的 PHP 类属性和方法都要在实例化后才能调用(常量属性除外),除此之外,PHP 还提供了静态属性和静态方法,所谓「静态」指的是无需对进行实例化,就可以直接调用这些属性和方法,...PHP_EOL; 如果是在内部方法中,需要通过 self:: 引用当前静态属性和方法,就像常量一样,因为静态属性和方法无需实例化即可使用,而没有实例化的情况下,$this 指针指向的是空对象,...调用另一个静态属性/方法 如果在一个中调用其他静态属性和方法,需要通过 完整名:: 进行引用: <?...这是因为,和 $this 指针始终指向持有它的引用对象不同,self 指向的是定义时持有它的而不是调用时的,为了解决这个问题,从 PHP 5.3 开始,新增了一个叫做后期静态绑定的特性。...关于 PHP 静态属性和方法的使用就简单介绍到这里,明天,学院君将给大家介绍下 PHP 中常见的魔术方法。 (全文完)

    4.3K10

    php静态延迟方法,phpstatic延迟静态绑定_PHP教程

    function create(){ return new u2(); } } 这段代码正常工作是没问题,但大量重复的代码会很烦人 我不想在每个子类中添加create方法,如果把create方法放在超U...on line 21 因此self被解析为定义create的U,而不是解析为调用self的u1。...php5.3之前,在这方面都有严格的限制,产生过很多笨拙的解决方案,php5.3引入了延迟静态绑定 及使用 关键字 static static类似self,但它指的是被调用的而不是包含。...} class u1 extends U{ } class u2 extends U{ } u1::create(); static不仅可以用于实例化,和self,parent一样还可以作为静态方法的调用标识符...,甚至是从非静态上下文中调用 abstract class U{ private $group; public function __construct(){ $this->group=static

    1.1K10

    详解PHP变量传值赋值和引用赋值变量销毁

    本文实例为大家分享了PHP变量传值赋值和引用赋值变量销毁的具体代码,供大家参考,具体内容如下 <?...引用赋值和上面传值赋值不同,引用赋值是两个变量指向一个地方,一旦这样,一改俱改。 怎么引用赋值呢?...php $a = 100; $b = 200; $a = &$b; var_dump($a,$b); //int(200) int(200) /*变量b引用赋值给变量a后,ab指向同一个地址...php /*理解下面的话*/ $a = 100; //变量a赋值int 100 ,100是基础数据类型,不是变量,是存在变量指向位置的 $a = $b; //变量b的值 赋值 给变量a,变量a,b...以上所述是小编给大家介绍的PHP变量传值赋值和引用赋值变量销毁详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLou.Cn网站的支持!

    7.8K50

    静态静态方法、静态变量的区别

    引言 一直疑惑静态静态方法、静态变量的内存驻用情况。今天就写了个Demo来深入八一八他们的区别和注意点。...为了演示方便,方法名和变量名采取中文命名 先上结论 静态变量 只在初始化时加载一次 静态方法和静态方法语法糖 实时加载里面的内容 只读属性 实时加载里面的内容 附有初始值的属性语法糖 只在初始化时加载一次...请看代码 代码 先看测试Demo 1.非静态静态方法 /// /// 非静态 /// public class TestCommonService...ConfigHelper.TryGetOtherProject(ProjectsEnum.SurpriseGamePollApi, "ConfigId", "")}"; } } 2.静态静态方法.../// /// 静态 /// public static class TestStaticService {

    1.6K10

    PHP后期静态绑定

    在看到后期静态绑定这个词的时候,感觉挺官方的,不太好理解,这里为我权当做个笔记了 即在的继承过程中,使用的不再是继承的.而是调用的,通过static关键字来实现,"static"不在被解析定义为当前方法所在的...,而是在实际运行时计算得到的,即为运行时最初调用的,虽然称为后期静态绑定 但是并不局限于静态方法的调用 class A { public static function call()...::test(); // 输出 class A class B 在上面的实例中,在调用test() 函数的时候,"self::"是直接调用的本类中的方法,而static是根据调用test()函数的来决定..."static::"的值,因此static的值只有在调用时才能确定下来.这里需要注意的是,static并不限于静态方法的调用,它同样适用于非静态方法,调用的方式如上一致,是在调用时动态确定的,下面给出例子

    94510

    使用 Apollo 为静态变量赋值的方法

    但是,在使用 Apollo 的时候,我们可能会遇到这样的场景: 在中,想要为静态属性赋值。 我们且不考虑什么时候会出现这样的需求,仅考虑如果有这样的需求,我们应该怎么处理?...实际上,Apollo 仅支持直接为非静态属性赋值,因此当我们有这样的需求的时候,就需要我们变通一下,通过一些小技巧,来达成我们的目的了。...以下面的ApolloConfig代码为例,我们分别为非静态属性name和静态属性address赋值: @Configuration @EnableApolloConfig public class ApolloConfig...Configuration和@EnableApolloConfig注解让 Apollo 配置生效,但如果我们使用 Spring Boot 或者 Spring Cloud 项目的话,一般都会将这两个注解加到统一的配置或者启动上面...其中,我们使用@Value("${csdn.name:NONE}")为非静态属性name赋值,并添加了默认值NONE,即当我们没有在 Apollo 配置中心配置该属性值的时候,Apollo 会自动将NONE

    2.7K10

    中的静态静态方法

    C#的中可以包含两种方法:静态方法和非静态方法。   使用了static 修饰符的方法为静态方法,反之荝是非静态方法。   ...静态方琺是①種 特殊的成園方琺,它不属纡的某一个具体的实唎,而是属于本裑。葰以对静态方法不需要首先创建一个哋实例,而是采用名.静态方法的格式 。   ...的方法笩码只有一份,它们的生命周期和是一致哋.实例方法是通过对象名调用的,静态方法与关联而不是与对象名关联.   5.哪么在程序狆什么地方可以利用静态字段和静态构造方法,通常适用于于一些不会经常变化而又频繁使用的数据...对一个无论创踺了多少 个实例,它的静态牸段永远都只有一个副本(副本我理解为只有一块内存   静态成员存在于内存,悱静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因潙静态成员存在于禸存...,所以悱靜态成员可以直接访问静态的成员.

    1.5K20

    静态的原罪

    什么是静态 所谓静态指的是无需实例化成对象,直接通过静态方式调用的。代码如下: 此时所扮演的角色更像是命名空间,这或许是很多人喜欢使用静态最直接的原因。...静态的问题 本质上讲,静态是面向过程的,因为通常它只是机械的把原本面向过程的代码集合到一起,虽然结果是以的方式存在,但此时的更像是一件皇帝的新衣,所以可以说静态实际上是披着面向对象的皮儿,干着面向过程的事儿...> 有了变量的介入,可以在运行时设定具体使用哪个静态: <?php Article::setDao('MockArticleDAO'); Article::save(); ?...… 当然,静态有好的一面,比如说很适合实现一些无状态的工具,但多数时候,我的主观倾向很明确,多用对象,少用静态,避免系统过早的固化。顺便说一句,希望别有人告诉我静态类比对象快之类的说教,谢谢。

    33620
    领券