C++对象间关系
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++对象间关系,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2074字,纯文字阅读大概需要3分钟。
内容图文
![C++对象间关系](/upload/InfoBanner/zyjiaocheng/842/cbebf65f998849ec84e67103e1ebbd0b.jpg)
/**
作者: cwl
内容:
类的符合,继承,委托
*/
#include <bits/stdc++.h>
using namespace std;
class Father
{
public:
Father(const string & _name = string("default")): name(_name), age(10) {}
Father(const Father&);
Father& operator = (const Father&);
virtual void show() { cout << "father" << endl; }
string name;
int age;
};
class Son: public Father
{
public:
void show() { cout << "son" << endl; }
};
void change1(Father &fa)
{
fa.show();
}
void change2(Son &son)
{
son.show();
}
int main()
{
/**
template<class T>
class queue {
protected:
deque<T>c;
public:
bool empty() const { return c.empty(); }
size_type size() const { return c.size(); }
reference front() { return c.front(); }
reference back() { return c.back(); }
void push(const value_type &x) { c.push_back(x); }
void pop() { c.pop_front(); }
};
【复合】我们的Queue里面有deque,我们通过一个功能已经很强大的类
deque实现queue,只开放了一部分接口。可以称为符合
同时也是一种设计模式 Adapter
1,构造和析构的关系
构造由内向外,析构有外向内。和继承的构造析构类比理解
class String {
public:
///...
private:
StringRep* rep;
};
class StringRep {
///...
};
【委托】只是一种说法。这样设计能够减低耦合性。
有一个指针指向实现了。方便切换
【继承】
class Base
{
};
class Node : public Base
{
};
可以用is a 来解释,苹果是一种水果, 继承的核心是搭配虚函数调用
class Shape {
public:
virtual void draw() const = 0; //纯虚
virtual void error(const string &msg); //虚函数
int objetID() const; //普通函数
};
【1】非虚函数,你不希望子类复写这个函数,override
【2】虚函数,希望子类来定义
【3】存虚函数,希望子类一定去复写,应为你没有定义
类的变量继承的是内存的实例,在内存中子类有父类的变量(如果可以继承得到)
类的函数继承的是使用权
继承测试
*/
Father fa("test");
Son son;
/**
fa.show(); ///father
son.show(); ///son
change1(fa); ///father
change1(son); ///father
///change2(fa); ///非法
change2(son); ///son
*/
/// void change1(Father &fa)
/// {
/// fa.show();
/// }
///不同点
change1(son); ///父类有virture输出son, 没有输出father
///和于其符合,virtual希望重写
///关于虚函数的虚表部分做一些简单了解
///http://www.cnblogs.com/lihaosky/articles/1606502.html
return 0;
}
内容总结
以上是互联网集市为您收集整理的C++对象间关系全部内容,希望文章能够帮你解决C++对象间关系所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。