c++,派生类对象可以对基类赋值,基类对派生类不可以赋值

#include <iostream>
using namespace std;

class DemoA
{
public:
    int m_a;
    void show();
    DemoA(int val);
};
DemoA::DemoA(int val)
{
    m_a = val ;
}
void DemoA::show()
{
    cout<<"ashow: DemoA.m_a="<<this->m_a<<endl;
}
//-------------------
class DemoB :public DemoA
{
public:
    int m_b;
    void show();
    DemoB(int aval , int bval);
};

DemoB::DemoB(int aval,int bval):DemoA(aval)
{
    m_b = bval ;
}
void DemoB::show()
{
    cout<<"bshow: DemoB.m_a="<<this->m_a<<endl;
    cout<<"bshow: DemoB.m_b="<<this->m_b<<endl;
}

//---------------
int main()
{
    DemoA ca(11);
    DemoB cb(111,222);
    ca.show();
    cb.show();

    ca = cb;//派生类对象可以对基类赋值
    ca.show();

//     cb=ca;//基类对派生类不可以赋值 error C2679: 二进制“=”: 没有找到接受“DemoA”类型的右操作数的运算符(或没有可接受的转换)
//     cb.show();
//
    while(1);
    return 0 ;
}
时间: 2024-08-05 15:53:07

c++,派生类对象可以对基类赋值,基类对派生类不可以赋值的相关文章

C++:基类与派生类对象之间的赋值兼容关系

4.5 基类与派生类对象之间的赋值兼容关系 在一定条件下,不同类型的数据之间可以进行类型转换,例如可以将整型数据赋给双精度型变量. 在赋值之前,先把整型数据转换为双精度型数据,然后再把它双精度型变量.这种不同类型之间的自动转换,称为赋值兼容.在基类和派生类对象之间也存在有赋值兼容关系,基类和派生类对象之间的赋值兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来代替.因为,通过公有继承,除了构造函数和析构函数外,派生类保留了基类其他的所有的成员.那么,派生类就具有基类的全部功能,凡

基类指针引用派生类对象

#include<iostream> #include<cstring> using namespace std; class A{ char name[20]; public: void put_name(char *n){ strcpy_s(name, n); } void get_name()const{ cout << name << endl; }; }; class B:public A{ char num[20]; public: void p

为什么基类指针和引用可以指向派生类对象,但是反过来不行?

为什么基类指针和引用可以指向派生类对象,但是反过来不行? 基类指针和引用 BaseClass *pbase = NULL; DerivedClass dclass; pbase = & dclass; 基类指针和引用可以指向派生类对象,但是无法使用不存在于基类只存在于派生类的元素.(所以我们需要虚函数和纯虚函数) 原因是这样的: 在内存中,一个基类类型的指针是覆盖N个单位长度的内存空间. 当其指向派生类的时候,由于派生类元素在内存中堆放是:前N个是基类的元素,N之后的是派生类的元素. 于是基类的

Objective-C对象之类对象和元类对象

作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/8592492 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号wangzzstrive来支持我,谢谢! 作为C语言的超集,面向对象成为Objective-C与C语言的最大区别,因此,对象是Objective-C中最重要的部分之一.目前面向对象的语言有很多,Objective-C中的对象又和其他语言中的对象有什么区别呢?下面来简单介绍Objectiv

python—类对象和实例对象的区别

最近在对RF的通讯层的模块进行封装,需要将之前放在类似main里面的一个方法,如下所示:这段代码是开发提供,用于接口测试,模拟底层通讯,具体的通讯是在dll内,python这边只是做了个封装让RF进行调用.这段通讯层的代码实质上做了五件事: 第一:加载dll: 第二:初始化dll内的通讯参数: 第三:与服务器进行连接,创建session 第四:把数据senbuffer通过sessionManger发送给服务器 第五:取得的数据返回recibuffer def testlogin(ip,port,

Python3.2官方文档翻译-- 类定义语法和类对象

6.3 初识类 类引入一些新语法:三种新的对象类型和一些新的语义. 6.3.1 类定义语法 类定义的最简单形式如下: class ClassName: <statement-1> . . . <statement-N> 类定义和函数定义(def语句)一样,必须先执行然后才生效.(你当然可以把类定义放在if语句分支中或者嵌入在函数中) 在实际情况中,在类定义中的语句常常是方法的定义,但是其他语句也是允许的并且有时是很有用的---以后我们会讨论到这点.在类中的定义方法通常有一个参数列表

String类对象的常用操作及方法

转载自http://blog.csdn.net/fire1175/article/details/1690431 String类对象的常用操作及方法在Java中,String类包含有50多个方法来实现字符串的各种操作,以下介绍一些我们需要经常使用的方法.(1)字符串的连接public String concat(String str) 该方法的参数为一个String类对象,作用是将参数中的字符串str连接到原来字符串的后面. (2)求字符串的长度public int length()返回字串的长

(一)Python入门-6面向对象编程:03类对象-类属性-类方法-静态方法

一:类对象 前面讲的类定义格式中,“class 类名:”.实际上,当解释器执行class 语句时, 就会创建一个类对象. [操作] #测试类对象的生成 class Student: pass #空语句 print(type(Student)) print(id(Student)) print(Student) s1 = Student() print(s1) Stu2 = Student s2 = Stu2() print(Stu2) print(s2) 运行结果: <class 'type'>

python类对象、类属性

一."class" 类名:实际上,当解释器执行class语句时,就会创建一个类对象. 二.类属性: 类属性是从属于类对象的属性,也称为"类变量".由于,类属性从属于类对象,可以被所有实例对象共享. class   类名: 类变量名 = 初始值 在类中或者类的外面,我们可以通过:"类名.类变量" 来读写. 原文地址:https://www.cnblogs.com/yingxiongguixing/p/12186077.html

基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------&gt; 可以返回派生类对象的引用或指针

您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. 百度和网页 http://bbs.csdn.net/topics/380238133 的作者无关,不对其内容负责.百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面. 首页 精选版块 移动开发 iOS Android Qt WP 云计算 IaaS Pass/SaaS 分布式计算/Hadoop J