`

[C++][基础知识1] 冲 突

    博客分类:
  • C++
 
阅读更多
一 冲 突
如果一个派生类的不同的基类之间有共同的成员,则在派生类中便出现了成员同名的情况,从而造成成员访问的不惟一性,这种情况称为冲突。为了解决此类问题,可以在访问同名的成员时用作用域运算符”::”指定其所属的类。例如:

#include<iostream.h>
class A {
	int a;
public:
	int b;
	A(int x,int y){a=x;b=y;}
	int geta(){return a;}
};
class B {
	int a;
public:
	int b;
	B(int x,int y){a=x;b=y;}
	int geta(){return a;}
};
class C:public A,public B {
public:
	C(int x,int y,int z,int q):A(x,y),B(z,q){}
};
void main()
{
	C c1(1,2,3,4);
	cout<<c1.A::geta()<<'\t'<<c1.A::b<<'\t';  //A行
	cout<<c1.B::geta()<<'\t'<<c1.B::b<<'\n';  //B行
}


如果A行和B行不指定c1的成员函数geta()和成员数据b是从哪个基类继承来的,则系统编译时会报错,指出其取值不惟一。
需要指出的是,作用域运算符“::”不能嵌套使用,它只能直接限定类的成员。例如:

#include<iostream.h>
class A{
public:
	int a;
	A(int x){a=x;}
};
class B:public A{
public:
	int a;
	B(int x,int y):A(y){a=x;}
};
class C:public B{
public:
	C(int x,int y):B(x,y){}
	int getaa(){return A::a;}
	int getba(){return B::a;}
};
void main()
{
	C c1(1,2);
	cout<<c1.B::A::a<<'\n';//A行
	cout<<c1.B::a<<'\n'; 
	cout<<c1.getaa()<<'\n'<<c1.B::a<<'\n';  //B行
}


程序编译指出A行语句出错,运算符“::”不能连续使用,要解决这种情况,可以
类C中增加一个取值函数getaa(),这样,B行的输出就不存在这种情况。
分享到:
评论

相关推荐

    C++基础知识总结

    ### C++基础知识总结 #### 一、C++数据和变量的类型及变量作用域 **1. 基本的内置类型** C++提供了一系列基本的内置数据类型,用于存储不同种类的数据。以下是一些常见的类型及其特点: - **布尔型 (`bool`)**:...

    C++基础知识课件学习

    C++基础知识介绍,清楚简单明了,很容易进行记忆与学习

    c++基本知识点汇总

    C++基本知识点涵盖了语言的核心语法、面向对象编程原理以及标准库的使用等多个方面。下面详细介绍C++编程语言的基本知识点。 首先,内联函数是C++中一种特殊的函数,用于优化小函数的调用过程。在编译时,内联函数...

    C++基础入门.pdf

    C++是一种功能强大且灵活的编程语言,本文档旨在为读者提供一个基本的C++基础知识入门指南,包括创建项目、编写代码、运行程序、注释、变量、常量、关键字、标识符命名规则和数据类型等方面的知识点。 1. 创建项目...

    少儿编程C++初级基础知识点.zip

    【少儿编程C++初级基础知识点】是针对初学者设计的一系列C++编程教学内容,旨在帮助孩子们建立起坚实的编程基础。这个压缩包包含了多个章节的源代码文件,涵盖了C++语言的基础概念和关键语法,让我们逐一解析这些...

    C-C++ 面试基础知识总结.pdf

    C/C++ 面试基础知识总结,只为复习、分享。 文档目录 文档评论 (0) C/C++ 面试基础知识总结 C/C++ STL 数据结构 算法 Problems 操作系统 计算机网络 网络编程 数据库 设计模式 链接装载库 其他 书籍...

    C++初学基础知识.doc

    C++初学基础知识 C++初学基础知识 C++初学基础知识 C++初学基础知识

    c++基础知识

    c++基础知识,关于数据类型、常量、变量等C++基础知识的介绍

    1、C++基础知识实验.cpp

    1、C++基础知识实验.cpp

    sherpahu#AlgorithmsNotes#刷题笔记:C++基础知识——STL之pair&tuple1

    PAT基础知识——STL之pair&tuple定义用法初始化:使用大括号直接对first,second赋值查询用途替换二元结构体,初始化、获取元素值更方便用于m

    C++入门选择题练习

    总的来说,这个压缩包是一个很好的C++入门学习资源,通过选择题的实践,你可以更有效地掌握C++的基础知识,为后续的学习打下坚实基础。记得,理论学习与实际练习相结合是学习编程最有效的方法,所以不要只是阅读,...

    C++基础知识归纳整理

    该文档对C++基础知识进行了详细归纳整理,相信会帮朋友们温故知新的。大家都加油

    C++基础知识-常量.pdf

    C++基础知识——常量

    给C++初学者50个忠告和C++基础知识.wps

    给C++初学者50个忠告和C++基础知识

    C++基础知识.md

    本人在c++学习过程中的一些随笔,比较乱,但是很实用。

    c++基础知识1.jpg

    适合c++初学者,非常详细

    自己整理c++基础知识.doc

    自己整理c++基础知识.doc

    C++基础知识学习课件

    学习C++的基础知识,对于任何想要从事软件开发的人来说都是必要的。它不仅适用于系统级编程,也是游戏开发、嵌入式系统、桌面应用和大规模软件项目的重要选择。掌握C++的基础,不仅可以帮助理解其他高级编程语言,也...

    c++ 基础知识 以及qt5.9.9文档

    c++ 基础知识 以及qt5.9.9文档

Global site tag (gtag.js) - Google Analytics